题目考察的知识点

  • 二叉搜索树遍历
  • 中序遍历

题目解答方法的文字分析

rangeSumBST 方法接收 TreeNode 类型参数,以及两个 int 类型的参数 low 和 high,并返回一个整型结果。

在 rangeSumBST 方法中,首先检查 root 是否为 null,如果是,则返回0。

继续检查 root 的值与 low 和 high 的大小关系。如果 root 的值小于 low,则递归调用 rangeSumBST 方法传入右子树,同时保持 low 和 high 参数不变,忽略当前节点及其左子树。如果 root 的值大于 high,则递归调用 rangeSumBST 方法传入左子树,同时保持 low 和 high 参数不变,忽略当前节点及其右子树。如果 root 的值在 low 和 high 之间(包含边界),则将 root 的值累加到结果中,并同时递归调用 rangeSumBST 方法传入左子树和右子树,保持相同的 low 和 high 参数。

返回计算得到的结果作为方法的返回值。

本题解析所用的编程语言

  • cpp

完整且正确的编程代码

class Solution {
public:
    int rangeSumBST(TreeNode* root, int low, int high) {
        if (root == nullptr) return 0;
        if (root->val < low) return rangeSumBST(root->right, low, high);
        if (root->val > high) return rangeSumBST(root->left, low, high);
        return root->val + rangeSumBST(root->left, low, high) + rangeSumBST(root->right,
                low, high);
    }
};

EOF