次のノードのバイナリツリー57-

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

  1. ノードは、右の子を持つ場合、それは次のノードがその右側のサブツリーの最も左側の子であるのです。言い換えれば、右の子ノードから出発し、左の子ノードへのポインタに沿ってきた、我々は次のノードを見つけることができます。
  2. 権利サブツリーが存在しない場合、それは2例に分けることができます
    • ノードはその親ノードの左の子であるならば、それは次のノードがその親であるのです。
    • ノードは、右の子でもない、そしてそれは親ノードの右の子であるならば、それはノードを見つけるまで、親ノードへのポインタに沿って道を容易にする必要性は、その親の左の子です。
/*function TreeLinkNode(x){
    this.val = x;
    this.left = null;
    this.right = null;
    this.next = null;
}*/
function GetNext(pNode)
{
    // write code here
    if(pNode == null) return null;
    if(pNode.right !== null) {
        pNode = pNode.right;
        while(pNode.left !== null) {
            pNode = pNode.left;
        }
        return pNode;
    }
    while(pNode.next !== null) {
        if(pNode == pNode.next.left) {
            return pNode.next;
        }
        pNode = pNode.next;
    }
    return null
}
公開された80元の記事 ウォンの賞賛0 ビュー1956

おすすめ

転載: blog.csdn.net/weixin_43655631/article/details/104098276