前記ノードの指定されたバイナリツリーは、先行順走査順序とリターンの次のノードを見つけます。ツリー内のノードは、左と右の子ノードではないだけを含むことに注意してください、親ノードは、を指すポインタが含まれています。
- ノードは、右の子を持つ場合、それは次のノードがその右側のサブツリーの最も左側の子であるのです。言い換えれば、右の子ノードから出発し、左の子ノードへのポインタに沿ってきた、我々は次のノードを見つけることができます。
- 権利サブツリーが存在しない場合、それは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
}