题解 | #二叉树的下一个结点#
二叉树的下一个结点
http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e
/*
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.right != null) {
return getNode(pNode.right);
}
if(pNode.next != null) {
if(pNode.next.left == pNode) {
return pNode.next;
}
return getRootNode(pNode.next, pNode);
}
return null;
}
private TreeLinkNode getNode(TreeLinkNode pNode) {
if(pNode.left != null) {
return getNode(pNode.left);
}
return pNode;
}
private TreeLinkNode getRootNode(TreeLinkNode next,TreeLinkNode pNode) {
if(next.next != null) {
return getRootNode(next.next, next);
}
if(next.right == pNode) {
return null;
}
return next;
}
}