LeetCode.938.Range Sum of BST 二叉搜索树BST的范围和
题目描述
938 Range Sum of BST
https://leetcode-cn.com/problems/range-sum-of-bst/
Given the root node of a binary search tree, return the sum of values of all nodes with value between L and R (inclusive).
The binary search tree is guaranteed to have unique values.
Example 1:
Input: root = [10,5,15,3,7,null,18], L = 7, R = 15
Output: 32
Example 2:
Input: root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10
Output: 23
Note:
The number of nodes in the tree is at most 10000.
The final answer is guaranteed to be less than 2^31.
解题过程
递归深度优先搜索 + 利用BST的性质剪枝
时间复杂度 O(n)
,空间复杂度 O(n)
private static class SolutionV2020 {
public int rangeSumBST(TreeNode root, int L, int R) {
return dfs(root, L, R);
}
// 递归遍历二叉树,返回root中在[L,R]之间的结点和
private int dfs(TreeNode root, int L, int R) {
if (null == root) {
return 0;
}
// 剪枝,剪掉根和右子树
if (root.val > R) {
return dfs(root.left, L, R);
}
// 剪枝,剪掉根和左子树
if (root.val < L) {
return dfs(root.right, L, R);
}
// 根在[L,R]之间
return root.val + dfs(root.left, L, R) + dfs(root.right, L, R);
}
}
GitHub代码
algorithms/leetcode/leetcode/_938_RangeSumOfBST.java
https://github.com/masikkk/algorithms/blob/master/leetcode/leetcode/_938_RangeSumOfBST.java
页面信息
location:
protocol
: host
: hostname
: origin
: pathname
: href
: document:
referrer
: navigator:
platform
: userAgent
: