我正在练习算法并解决这个经典问题。有很多解决方案,我正在尝试使用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;
};