当前位置: 首页 > 知识库问答 >
问题:

试图找到BST的范围和时错误的递归

乜思淼
2023-03-14

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

共有1个答案

赵景曜
2023-03-14

您正在执行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;
};
 类似资料:
  • 问题:给定二叉查找树的根节点,返回值在L和R(包括)之间的所有节点的值之和。 二叉搜索树保证具有唯一的值。 例1: 输入:root=[10,5,15,3,7,null,18],L=7,R=15 输出: 32 Leetcode问题:https://leetcode.com/problems/range-sum-of-bst/ 我的方法是:我尝试执行dfs并访问每个节点,如果该节点上的值符合约束条件,

  • 我有一个电子表格,由外部应用程序通过Google Sheets API编辑。然后,我在电子表格中有一个谷歌应用程序脚本函数,它由可安装的更改触发器调用。在开始时,此函数检查changeType是否等于“EDIT”,然后使用getActiveRange()检查编辑范围的最后一列。这很好,但有时返回的范围比实际编辑的范围小。功能代码: 例如,我们有一个空范围A3: G5。在这个范围内插入值后,它会正确

  • 一切都清楚一次是UTC中的日期:

  • 下面是一些代码的压缩版本,它会导致范围检查错误和溢出错误,如果我打开这些编译器检查指令的话。我理解为什么这会导致溢出,在C1的乘法上,它似乎可能会超过数据类型的最大值。但为什么这也会触发范围检查错误?Delphi的文档和其他关于堆栈溢出的文章听起来像是范围检查错误通常是针对超出范围的数组访问。但是我没有访问一个数组,因为它说的数组导致了范围检查错误。也许是在派往param1的任务上?但如果是这样的

  • 问题内容: 尝试此计算时出现溢出错误,但我不知道原因。 问题答案: 您要求math.exp计算的数字以十进制表示,超过110,000个数字。这稍微超出了double的范围,因此会导致溢出。