题目描述:
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
思路解析:
代码:
public class Solution {
public TreeLinkNode GetNext(TreeLinkNode pNode)
{
TreeLinkNode node = null;
if(pNode.right!=null){//是否有右子树
node = pNode.right;
while(node.left!=null){
node = node.left;
}
return node;
}
if(pNode.next==null)//是否有父节点
return null;
if(pNode.next.left == pNode)
return pNode.next;
node = pNode.next;//向上爬一层
while(node.next!=null){//是否有父节点
if(node.next.left==node)//节点是不是为父节点的左子树
return node.next;
node= node.next;
}
return null;
}
}