Skip to content

530 二叉搜索树的最小绝对差

给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。

差值是一个正数,其数值等于两值之差的绝对值。

題解

中序遍历完一遍,然后中序遍历每两个值差的最小值。

javascript
var getMinimumDifference = function(root) {
    var min = Number.MAX_SAFE_INTEGER
    var prev = null
    var middleOrder = function(root) {
        if(!root) {
            return
        }
        middleOrder(root.left)
        if(prev) {
            const diff = root.val - prev.val
            min = Math.min(min, diff)
        }
        prev = root
        middleOrder(root.right)
    }
    middleOrder(root)
    //console.log(min)
    return min
};

非递归

javascript
var getMinimumDifference = function(root) {
    const stack = []
    let result = Number.MAX_SAFE_INTEGER
    let prev = null
    
    stack.push(root)

    while(stack.length) {
        const current = stack.pop()

        if(current) {
            //处理中序
            if(current.right) {
                stack.push(current.right)
            }
            //重新塞入中值
            stack.push(current)
            stack.push(null)
            if(current.left) {
                stack.push(current.left)
            }
        } else {
            const current = stack.pop()
            if(prev) {
                const diff = current.val - prev.val
                result = Math.min(diff, result)
            }
            prev = current

        }
    }
    return result
};

上次更新于: