【leetcode】530. 二叉搜索树的最小绝对差

32 阅读1分钟

leetcode-530.png

这里首先要理解,什么叫做二叉搜索树,也就是左子树、根节点、右子树的值依次增大,中序遍历二叉搜索树的时候,序列是递增的。
所以这里可以利用这一性质来解题。
在中序遍历的时候来做判断,并把最小值保存即可。
注意,这里的判断,只能用prev !== null,而不能用 !prev
因为在prev = 0的时候 !prev 会为真

var getMinimumDifference = function (root) {
    let prev = null
    let diff = Infinity
    var inorder = function (node) {
        if(!node) return
        inorder(node.left)
        if(prev !== null){
            diff = Math.min(diff, Math.abs(prev - node.val))
        }
        prev = node.val
        inorder(node.right)
    }
    inorder(root)
    return diff
};