美文网首页
算法-8.二叉树的下一个结点

算法-8.二叉树的下一个结点

作者: zzq_nene | 来源:发表于2020-08-09 00:22 被阅读0次

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

        public static TreeLinkNode getInOrderNext(TreeLinkNode node) {
            // 如果当前需要找的结点的右子树不为null
            // 则判断其右子树是否有左边子树,如果有找到最左结点
            if (node.right != null) {
                TreeLinkNode node1 = node.right;
                while (node.left != null) {
                    node1 = node1.left;
                }
                return node1;
            } else {
                // 如果当前需要找的结点的右子树为null
                // 则找其父结点,判断其父结点的左子树是否是当前结点
                // 如果是,则返回
                while (node.next != null) {
                    TreeLinkNode parent = node.next;
                    if (parent.left == node) {
                        return parent;
                    }
                    node = node.next;
                }
            }
            return null;
        }
    

    相关文章

      网友评论

          本文标题:算法-8.二叉树的下一个结点

          本文链接:https://www.haomeiwen.com/subject/qvwrrktx.html