leetcode530-二叉搜索树的最小绝对值

leetcode 530
leetcode530-二叉搜索树的最小绝对值_第1张图片

思路

这里题目有确切说明这个二叉树是:二叉搜索树
那么我们可以想到二叉搜索树的特性,利用中序遍历:左中右
得到的结果是从小到达排列的
所以我们就只需要计算出每一个节点和前一个节点之间的差值,然后保存最小的差值就是本题答案
所以我们在中序遍历的过程中需要存储最小的差值,我们首先初始化result为无穷大,还需要存储前一个节点,用于进行比较,每次遍历到一个节点的时候,我们比较resul和root.val - pre.val的差值谁更小,把差值更小的存储起来,更新result,最终遍历完成后,得到的result就是整个二叉搜索树中的最小差值

实现

var getMinimumDifference = function (root) {
    let result = Infinity;
    // 前一个节点
    let pre = null;
    const deep = (root) => {
        if (!root) return;
        // 左
        root.left && deep(root.left);
        // 中
        if (pre) {
            // 由于中序遍历二叉搜索树结果后一个值一顶比前一个值大,所以这里的结果一定是正数
            result = Math.min(result, root.val - pre.val)
        }
        pre = root;
        // 右
        root.right && deep(root.right)
    }
    deep(root)
    return result;
};

你可能感兴趣的:(算法小课堂,leetcode,typescript,javascript,算法,数据结构)