剑指offer 08.二叉树的下一个节点
题目描述
解题思路
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;
}
//遇到根节点还没有找到,则返回null
return null;
}
}