2

Java でBinary Threadedツリーのpreorderトラバーサルのコードを書こうとしています。私は次のコードを書きました。これはいくつかの例に当てはまりますが、いくつかのエッジ シナリオを見落としているのではないかと心配しています。

詳細情報ノードには、ノードの左右の子をそれぞれ指す左右 の 2 つの参照があります。successorと呼ばれるブール フィールドは、正しいポインターが子または後続のトラバーサルを指しているかどうかを決定します (successor==false の場合:のポインターが子を指し、そうでない場合は、順序どおりのトラバーサル サクセサーを指します) 。

誰かがここで私の論理の欠陥を指摘できれば幸いです...

public void threadedPreorder(){
        IntThreadedTreeNode prev, p=root;    //pointers to binary tree nodes

        while(p!=null){
            while(p.left!=null){    //traversal to leftmost node
                visit(p);           //while visiting it
                p=p.left;
            }
            visit(p);
            prev=p;
            p=p.right;                      //shift to right or successor
            if(p!=null && prev.successor){    //avoid visiting the same node twice
                while(p!=null && prev.successor){
                    prev=p;
                    p=p.right;
                }
            }
        }
    }

どんな助けでも大歓迎です... :)

4

1 に答える 1