如何获得javascript中两个值或节点之间的差

问题描述 投票:0回答:1

我正在尝试解决此问题。我没有得到预期的输出

给出根节点为root的二叉搜索树(BST),返回树中任何两个不同节点的值之间的最小差。

示例:

输入:root = [4,2,6,1,3,null,null]输出1说明:请注意,root是TreeNode对象,而不是数组。

给定的树[4,2,6,1,3,null,null]由下图表示:

      4
    /   \
  2      6
 / \    
1   3  

虽然此树的最小差异为1,但它发生在节点1和节点2之间,也发生在节点3和节点2之间。

我尝试过这样

var minDiffInBST = function (root) {
    let min = Number.MAX_VALUE
    const getMin = (node) => {
        if (node.left && node.right) {
            console.log('both')
            return Math.min(node.val - node.left.val, node.right.val - node.val)
        } else if (node.right) {
            console.log('right')
            return node.right.val - node.val
        } else if (node.left) {
            console.log('left')
            return node.val - node.left.val
        } else {
            return Number.MAX_VALUE
        }
    }

    const preOrder = (root) => {
        if (!root) {
            return 0;
        }
        let x = getMin(root)
        if (x < min)
            min = x
        preOrder(root.left)
        preOrder(root.right)

    }
    preOrder(root)
    return min
};

console.log(minDiffInBST({
        "val": 90,
        "left": {
            "val": 69,
            "left": {"val": 49, "left": null, "right": {"val": 52, "left": null, "right": null}},
            "right": {"val": 89, "left": null, "right": null}
        },
        "right": null
    }

))

获取输出3期望的输出 1

我被带到这里的问题https://leetcode.com/problems/minimum-distance-between-bst-nodes/

javascript binary-search-tree
1个回答
0
投票

以下是一些伪代码,可帮助您进行思考。

© www.soinside.com 2019 - 2024. All rights reserved.