力扣938.二叉搜索树的范围和

题目

给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。

示例 1:

二叉搜索树1

1
2
输入:root = [10,5,15,3,7,null,18], low = 7, high = 15
输出:32

示例 2:

二叉搜索树2

1
2
3
4

输入:root = [10,5,15,3,7,13,18,1,null,6], low = 6, high = 10
输出:23

提示:

1
2
3
4
树中节点数目在范围 [1, 2 * 104]
1 <= Node.val <= 105
1 <= low <= high <= 105
所有 Node.val 互不相同

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/range-sum-of-bst

解答

一道简单题,中序遍历递归即可

1
2
3
4
5
6
7
8
9
10
class Solution {
public int rangeSumBST(TreeNode root, int low, int high) {
if (root == null) return 0;
int leftVal = rangeSumBST(root.left, low, high);
int midVal = 0;
if (low <= root.val && root.val <= high) midVal = root.val;
int rightVal = rangeSumBST(root.right, low, high);
return leftVal + midVal + rightVal;
}
}