目录结构
1.题目
给定二叉搜索树的根结点 root
,返回 L
和 R
(含)之间的所有结点的值的和。
二叉搜索树保证具有唯一的值。
示例:
输入:root = [10,5,15,3,7,null,18], L = 7, R = 15
输出:32
输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10
输出:23
提示:
- 树中的结点数量最多为
10000
个。 - 最终的答案保证小于
2^31
。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/range-sum-of-bst
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2.题解
递归。
- 若root.val在L和R之间,则累计值;
- 若root.val<R,则继续搜索右子树;
- 若root.val>L,则继续搜索左子树。
public class Solution938 {
int result;
public int rangeSumBST1(TreeNode root, int L, int R) {
result= 0;
dfs(root, L, R);
return result;
}
public void search(TreeNode node, int L, int R) {
if (node != null) {
if (L <= node.val && node.val <= R) {
result += node.val;
}
if (L < node.val) {
dfs(node.left, L, R);
}
if (node.val < R) {
dfs(node.right, L, R);
}
}
}
}
- 时间复杂度:,为节点个数。
- 空间复杂度:,为BST高度。