次のノードにバイナリツリー:安全五十から七を証明するために提供します

カジュアルワーキング

前記ノードの指定されたバイナリツリーは、先行順走査順序とリターンの次のノードを見つけます。ツリー内のノードは、左と右の子ノードではないだけを含むことに注意してください、親ノードは、を指すポインタが含まれています。
栗の場合

     2
   5     6
 1  3   4 7
     9

図1に示すように、次のノードは次のノードが9である2,3- 5,9約ノードです。

思考

私たちは、親ノードへのポインタを知っているので、あなたは、詳細な分析を行うことができます。

  1. ない兄弟ノード、親ノードの左サブツリーの、場合、例えば1次ノードである親ノードです。
  2. 左右のサブツリーまたはサブツリー・ノードのために右、左及び右サブツリーないサブツリーを有しています。図3及び図5は、例えば、次のノードは、その右の子であること。
  3. ノードは、ノードの親ノードの左サブツリーにクエリをチェックする必要があります親がこの時間、例えば5、独自のあるなし左ノードと右のサブツリーのために、次のノード9である5父。
  4. 右サブツリー及び右サブツリーの例えば次のような2再帰ノードの左下サブツリー左サブツリーは、4である場合。

コード

public class Solution {
    public TreeLinkNode GetNext(TreeLinkNode pNode)
    {
        
        TreeLinkNode head=pNode;
        if(head==null) return null;
        if(head.right!=null)
        {
            TreeLinkNode p=head.right;
            while(p.left!=null)
                p=p.left;
            return p;
        }
        while(head.next!=null){
            if(head.next.left==head) return head.next;
            head=head.next;
        }
        return null;
        
        }
    }

公開された84元の記事 ウォン称賛53 ビュー7387

おすすめ

転載: blog.csdn.net/weixin_44015043/article/details/105421874