思路:
/* //用手写与敲代码不一样!用手写感觉是对的,其实是错的!
public class TreeLinkNode {
int val;
TreeLinkNode left = null;
TreeLinkNode right = null;
TreeLinkNode next = null; //父节点
TreeLinkNode(int val) {
this.val = val;
}
}
*/
public class Solution {
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)//注意if判断的条件!
return pNode.next;
pNode=pNode.next;
}
return null;//退到根节点仍没找到,则返回null。
}
}