【发布时间】:2017-05-04 12:14:46
【问题描述】:
任何人都可以建议,以下代码用于查找 BST 中 k 个最小元素的总和有什么问题?它返回树中所有节点的总和。
public int findSum(Node root, int k){
int count = 0;
return findSumRec(root, k, count);
}
private int findSumRec(Node root, int k, int count) {
if(root == null)
return 0;
if(count > k)
return 0;
int sum = findSumRec(root.left, k, count);
if(count >= k)
return sum;
sum += root.data;
count++;
if(count >= k)
return sum;
return sum + findSumRec(root.right, k, count);
}
【问题讨论】:
-
我会重用代码进行中序遍历,以便将遍历限制为仅 7 个元素
-
什么是预期输出的示例输入?你得到的是什么输出?
-
您的代码正在将树中的所有数字相加,验证它是否最小的逻辑在哪里
-
@Saurabh Jhunjhunwala :我使用了中序遍历方法。时刻计数等于 k(直到我需要找到总和),总和被返回。
标签: java algorithm recursion binary-search-tree