-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRangeSumOfBST.java
59 lines (56 loc) · 1.65 KB
/
RangeSumOfBST.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/**
* 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.
*/
public class RangeSumOfBST {
public static void main(String[] args){
int L = 7, R = 15;
RangeSumOfBST helper = new RangeSumOfBST();
System.out.println(
"Range Sum of [" + L + "," + R + "] is : " + helper.rangeSumBST(helper.getTreeRootNode(), L, R));
}
public int rangeSumBST(TreeNode root, int L, int R) {
return getRangeSum(0, root, L, R);
}
private int getRangeSum(int currentSum, TreeNode root, int L, int R){
if(root == null) return 0;
int sum = getRangeSum(currentSum, root.left, L, R);
if(root.val >= L && root.val <=R){
sum += root.val;
}
return sum + getRangeSum(sum, root.right, L, R);
}
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public TreeNode getTreeRootNode(){
TreeNode root = new TreeNode(10);
root.left = new TreeNode(5);
root.left.left = new TreeNode(3);
root.left.right = new TreeNode(7);
root.right = new TreeNode(15);
root.right.right = new TreeNode(18);
return root;
}
}