//思路:
//1、如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点;

//否则,向上找第一个左链接指向的树包含该节点的祖先节点。

public TreeLinkNode GetNext(TreeLinkNode pNode){
if(pNode==null){
return null;
}
if(pNode.right!=null){
//先判断 pNode 的右子树不为 null,
//pNode 的下一个结点就是 pNode 右子树的最左结点
TreeLinkNode node = pNode.right; //pNode 的右子树
while(node.left!=null){
node = node.left;
}
return node;
}else{ //否则,向上找第一个左连接指向的树包含该节点的祖先节点
while (pNode.next!=null){
TreeLinkNode parent = pNode.next;
if(parent.left==pNode){
return parent;
}
pNode = pNode.next;
}
}
return null;
}
www.mianshi.online,www.i9code.cn
本文由博客一文多发平台 OpenWrite 发布!