尝试查找 BST 的范围和时递归错误



我正在练习算法并解决这个经典问题。有很多解决方案,我正在尝试使用Javascript来解决它。我将在下面发布问题和我所拥有的内容:

给定二叉搜索树的根节点,返回值介于 L 和 R(含(之间的所有节点的值总和。

二叉搜索树保证具有唯一值。

Example 1:
Input: root = [10,5,15,3,7,null,18], L = 7, R = 15 Output: 32
var rangeSumBST = function(root, L, R) {
let result = 0;
if (root === null) return 0;
if (root.val >= L && root.val <= R) {
result += root.val
}
rangeSumBST(root.left, L, R)
rangeSumBST(root.right, L, R)
return result
};
// Output is 10 instead of 32

您正在执行rangeSumBST(root.left, L, R)而不使用它们的结果。最后只得到第一个节点值。请改用:

var rangeSumBST = function(root, L, R) {
let result = 0;
if (root === null) return 0;
if (root.val >= L && root.val <= R) {
result += root.val
}
let left = rangeSumBST(root.left, L, R)
let right = rangeSumBST(root.right, L, R)
return result + left + right;
};

最新更新