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

2020-08-09  本文已影响0人  zzq_nene

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

    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;
    }
上一篇下一篇

猜你喜欢

热点阅读