如果当前结点的右结点不为空,那么找它右子树最左边的那个结点就是当前结点的下一个结点。
如果当前结点的右结点为空,那么如果当前结点是它的父节点的左结点,那么父节点就是当前结点的下一个结点;如果当前结点不是父节点的左结点,那么得找它父节点的父节点,循环刚刚的判断即可。
此题直接画图找然后就很容易理解
public TreeLinkNode GetNext(TreeLinkNode pNode)
{
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.next.left == pNode){
return pNode.next;
}
pNode = pNode.next;
}
return null;
}

京公网安备 11010502036488号