剑指offer4J

剑指offer4J【C2 P8】二叉树的下一个节点

2020-11-22  本文已影响0人  sxqiong

题目

给定一个二叉树与其中一个节点(目标节点),找到中序遍历中的下一个节点(子节点中包含父节点的引用)

题解

解法1:从根节点中序遍历,遍历至目标节点,继续向下遍历一次,取得结果。
此解法缺点就是没有很好的利用子节点中的父节点属性,时间复杂度相对较高

解法2:

    public DetailTreeNode findNextInOrder(DetailTreeNode root, DetailTreeNode node) {
        if (node == null || root == null) return null;
        DetailTreeNode data;
        if (node.getRight() != null) {
            data = node.getRight();
            while (data.getLeft() != null) {
                data = data.getLeft();
            }
            return data;
        }
        data = node.getParent();
        while (data != null && node != data.getLeft()) {
            node = data;
            data = data.getParent();
        }
        return data;
    }

源码: 剑指offer4J

上一篇下一篇

猜你喜欢

热点阅读