【发布时间】:2021-09-28 06:51:42
【问题描述】:
所以我需要总结一个包含范围内的 BST 中的所有节点。例如,如果范围为 [7, 15]('[' 和 ']' 均指包括在内),
10
/ \
5 15
/ \ \
3 7 18
总和是 7 + 10 + 15 = 32
下面是我的代码,我正在做一个简单的 inOrderTraversal,但由于某种原因,结果总和为 0。
class Solution {
public int rangeSumBST(TreeNode root, int low, int high) {
int sum = 0;
helper(root, low, high, sum);
return sum;
}
public void helper(TreeNode root, int low, int high, int sum) {
if(root != null) {
helper(root.left, low, high, sum);
if(root.val >= low && root.val <= high) {
System.out.println("sum before was " + sum);
sum = sum + root.val;
System.out.println("sum after was " + sum);
}
helper(root.right, low, high, sum);
}
}
}
有人知道为什么是0吗?
【问题讨论】:
-
因为
int在java中不是引用类型,所以每一帧(方法)都有自己的sum变量的副本
标签: java binary-search-tree inorder