给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
分析同样先咕着,等我比赛完再来写
public class Solution {
void midTravel(TreeLinkNode pNode) {
}
public TreeLinkNode GetNext(TreeLinkNode pNode) {
if (pNode == null) {
return null;
}
TreeLinkNode rec = null;
// 如果有右子树,那么右子数最左下角就是所求
if (pNode.right != null) {
rec = pNode.right;
while (rec.left != null) {
rec = rec.left;
}
}
// 否则分为两种情况讨论
else {
TreeLinkNode parent = pNode.next;
if (parent != null && parent.right == pNode) {
rec = pNode;
while (parent != null && parent.right == rec) {
rec = parent;
parent = parent.next;
}
rec = parent;
} else {
rec = pNode.next;
}
}
return rec;
}
}