二叉树的下一个节点(Java实现)

来源:互联网 发布:淘宝肖像权投诉 编辑:程序博客网 时间:2024/06/02 03:14

本题为剑指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;}}}


原创粉丝点击