题目来源:
题目描述:
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
代码如下:
public class Solution {
public TreeLinkNode GetNext(TreeLinkNode node) {
if (node == null) {
return null;
}
//如果当前结点有右子树,则找右子树的最左结点
if (node.right != null) {
node = node.right;
while (node.left != null) {
node = node.left;
}
return node;
}
//没右子树,向上寻找第一个左子树为当前节点的结点
while (node.next != null) {
if (node.next.left == node) {
return node.next;
}
node = node.next;
}
return null;
}
}