二叉树的下一个结点
二叉树的下一个结点
http://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e
思路:分为两种大的情况:
如果该结点有右子树就循环查找左子树最左节点,如果该结点没有右子树就循环查找 它是它父亲节点的左孩子的节点, 如果遍历到根节点还没有找到,则返回null没有下一个节点了
public class Solution {
public TreeLinkNode GetNext(TreeLinkNode pNode)
{
if(pNode.right!=null){
TreeLinkNode cur = pNode.right;
while(cur.left!=null){
cur = cur.left;
}
return cur;
}
while(pNode.next!=null){
if(pNode.next.left==pNode){
return pNode.next;
}else{
pNode= pNode.next;
}
}
return null;
}
}
查看14道真题和解析