[オファー]は次のノードのバイナリツリーを獲得します8--

タイトル:バイナリーツリーとなっているノードを考えると、先行順走査順とリターンの次のノードを見つけます。ツリー内のノードは、左と右の子ノードだけでなく、親ノードが指すポインタが含まれている含まれていることに注意してください。

 

:トラバーサル順序どおりであるので、左ノード - > - >右

 (1)ノードの右サブツリー:次のノードは、ノードの右サブツリーの左ノードであります

 (2)右のサブツリーを持たないノードは、左の親ノードは、次のとおりです。次のノードは、その親ノードであります

 (3)ノードは、権利の子供を持っていない右の親ノードである:アップトラバース、ノードはその親ノードの左ノードで見つけ、次のノードが見つかりました。ノードの親ノードであります

/ * 
構造体TreeLinkNode { 
    int型のVal、
    構造体TreeLinkNode *左、
    構造体*のTreeLinkNode右、
    構造体*次TreeLinkNode; //親ノード
    TreeLinkNode(int型X):valは( X)、(NULL)、右(NULL)を左、次の( NULL){ 
        
    } 
;} 
* / 
クラスのソリューション{ 
パブリック:
    TreeLinkNode * GetNextの(TreeLinkNode *•PNODE)
    { 
        (==•PNODE nullptr A)のIF 
        { 
            nullptr返す; 
        } 
        //右サブツリーがあります。その次のノード、このノードをノードの左右のノード
        IF(pNode-> = nullptr右!)
        { 
            •PNODE = pNode->右; 
            ながら(!pNode->左= nullptr A) 
            {
                = pNode-•PNODE>左; 
            } 
            戻り•のPNODE; 
        } 
        ながら(pNode->次に= nullptr A!)
        { 
            //右サブツリーがない左のノードが親ノードであり、次のノードは、親ノードである
            場合には( == pNode-•PNODE>ネクスト>左)
            { 
                pNode-を返す>次に; 
            } 
            //右のサブツリーではありません:あなたは左の親ノードを見つけるまで、ノードは、その親ノード、トラバースアップに沿って親ノードに右ノードでありますノード
            { 
                •PNODE = pNode->次に; 
            } 
        } 
        nullptrリターン; 
    } 
}。

  

 

 

 

関連トピック:

  完全なバイナリツリーは二分探索木であるかどうかを確認します。木は二分探索木であるかどうかを判断するために完全なバイナリツリーを考えると、その真の印刷され、Falseの印刷はそうではありません

  バイナリ:バイナリツリーがあり、ツリーの各点のマークは値の重みを受ける権利を有する異なり、重みにリーフノードの最大重量を計算するアルゴリズムの最小のリーフノードから設計してください。バイナリツリーの各側面から、番号の後に2つのノード間の距離のノードが他のノードの縁に到達します。バイナリツリールートルートを考えると、離れ尋ねるに戻ります。

  ツリーの異なる形態:Tバイナリツリー(先頭からH <= 10、深さを超えないツリーの深さ、ノードN <1024ノードID 1〜Nの数)左から出力Tおよび配列前順、所定の右の葉ノードと最初のツリートラバーサル順序とポストオーダーシーケンス

  

おすすめ

転載: www.cnblogs.com/xiexinbei0318/p/11415895.html