题目来源
题目概述
给定二叉搜索树的根结点 root ,返回值位于范围 [low, high]
之间的所有结点的值的和。
思路分析
递归遍历树,判断遇到的节点是否满足要求,满足则加入结果。
代码实现
java实现
java
class Solution {
int res = 0;
public int rangeSumBST(TreeNode root, int low, int high) {
if (root == null) {
return 0;
}
if (root.val <= high && root.val >= low) {
res += root.val;
}
if (root.val > low && root.left != null) {
rangeSumBST(root.left, low, high);
}
if (root.val < high && root.right != null) {
rangeSumBST(root.right, low, high);
}
return res;
}
}
c++实现
cpp
class Solution {
public:
int res = 0;
int rangeSumBST(TreeNode* root, int low, int high) {
if (root == nullptr) {
return 0;
}
if (root->val <= high && root->val >= low) {
res += root->val;
}
if (root->val > low && root->left != nullptr) {
rangeSumBST(root->left, low, high);
}
if (root->val < high && root->right != nullptr) {
rangeSumBST(root->right, low, high);
}
return res;
}
};