各ノード2における移入次の右ポインタ

説明:

  バイナリツリーの所与の
構造体ノード{
  ヴァルINTと、
  ;ノード*は、左
  、右*ノードを
  、次のノード*を
}
、その次のポインタの各々を充填するように、その右隣のノードへのポインタ。右側には次のノード、NULLにし、次のポインタの場合。
最初は、すべての次のポインタはNULLに設定されています。

回答:

   前の質問に比べて、この問題は、木のための条件の欠如は、完全なバイナリツリーとして動作します。ノードが同じレベルである必要はないときに、次のノードを探しのみ

cur-現在のノードに存在する>ネクスト>左またはcur->右の位置は、2つの位置が、あなたが床に権利を持っている場合がありますので、おそらく、空になりました

最初の次のノードを探しています。具体的な再帰的なコードは次のとおりです。

  

クラスのソリューション{
 パブリック
    ノード *接続(ノード* ルート){
         IF(!ルート)リターンNULL; 
        ノード * = P-root-> 次回、
         しばらく(P-は){ // 右は、最初に次のノードを探している
            IF( P-> 左){ 
                P = P-> 左;
                 ブレーク; 
            } 
            IF(P-> 右){ 
                P = P-> 右;
                 BREAK ; 
            } 
            P = P->次に、
        }
        もし(root->右)root->右>次= P; 
        もし(root->左)root->左>次= root->右?root-> 右:P。
        CONNECT(ルート - > 右)。
        (ルート接続 - > ;左)
        リターンルート。
    } 
}。

 

おすすめ

転載: www.cnblogs.com/wangkaia/p/11998912.html