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) {
return pNode.next;
}
pNode = pNode.next;
}
return null;
}
}
}
【剑指offer】二叉树的下一个节点
最新推荐文章于 2019-08-19 17:03:02 发布