本题为剑指offer面试题58
牛客网测试地址:https://www.nowcoder.com/questionTerminal/9023a0c988684a53960365b889ceaf5e
[编程题]二叉树的下一个结点
- 热度指数:31242 时间限制:1秒 空间限制:32768K
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
Java代码:
package go.jacob.day609;
public class Demo1 {
public TreeLinkNode GetNext(TreeLinkNode pNode) {
if (pNode == null)
return null;
TreeLinkNode tmp = null;
// 如果pNode的右子树为空
if (pNode.right == null) {
tmp = pNode;
// 如果该节点是某个最右节点
while (tmp.next != null && tmp == tmp.next.right)
tmp = tmp.next;
return tmp.next == null ? null : tmp.next;
}
// 如果右子树不为空,找到右子树中的最左节点
tmp = pNode.right;
while (tmp.left != null) {
tmp = tmp.left;
}
return tmp;
}
class TreeLinkNode {
int val;
TreeLinkNode left = null;
TreeLinkNode right = null;
TreeLinkNode next = null;
TreeLinkNode(int val) {
this.val = val;
}
}
}