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

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

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

アイデア:

  1. 右側のノード、ダイレクト印刷
  2. 右側のノードなし
    1. このノードの左の親ノードは、自身のプリントであります
    2. このノードの右親ノードが満たし2.1まで、見上げ続ける、自分自身であります

自身の答え:

/*
public class TreeLinkNode {
    int val;
    TreeLinkNode left = null;
    TreeLinkNode right = null;
    TreeLinkNode next = null;

    TreeLinkNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {
    public TreeLinkNode GetNext(TreeLinkNode pNode)
    {
        if(pNode == null) return null;
        TreeLinkNode next = null;
        if(pNode.right != null){
            TreeLinkNode pRight = pNode.right;            
            while(pRight.left != null)
                pRight = pRight.left;
            next = pRight;
        }else if(pNode.next != null){
            TreeLinkNode curNode = pNode;
            TreeLinkNode pParrent = pNode.next;
            while(pParrent != null && pParrent.right == curNode){
                curNode = pParrent;
                pParrent = pParrent.next;
            }
            next = pParrent;
        }
        return next;        
    }
}

間違い:

注意:

答えに誰か:

おすすめ

転載: www.cnblogs.com/muche-moqi/p/12393057.html
おすすめ