【发布时间】:2014-05-10 03:01:22
【问题描述】:
我正在尝试在 Java 中创建一个方法来计算二叉搜索树中包含特定值的节点并打印出它们的内容。每个节点都包含一个带有标题的文章对象,我想在标题中包含关键字的树中查找并打印文章。但是,我不希望程序打印出超过 10 个(例如,1 个字母的关键字可能导致程序停止或崩溃)。代码在这里:
public int traverse(String key) {
if (root == null) {
System.out.println("Empty Tree!");
return 0;
} else {
int n = traverseHelper(root, key, 0);
return n;
}
}
public int traverseHelper(Node t, String key, int n) {
if (t == null) {
return n;
} else {
if (t.data.getTitle().indexOf(key) >= 0 && n <= 10) {
System.out.println(t.data);
n++;
}
return traverseHelper(t.left, key, n) + traverseHelper(t.right, key, n);
}
}
我正在尝试记录程序打印数据的次数,但我不完全确定如何打印。目前,该程序打印所有事件,或非常接近它。我知道我的递归方法有问题(无论如何我从来都不擅长递归),所以我将不胜感激对我做错的事情的一个很好的解释。不过,这是家庭作业,所以我不希望有明确的解决方案。 其他几件事: traverse 函数的目的是打印出文章,所以我很可能稍后会将其更改为 void 方法。它目前应该返回打印文章的最终计数。此外,树的设置与任何其他 BST 一样,但如有必要,我会澄清我的代码。
谢谢!
【问题讨论】:
标签: java recursion tree binary-tree binary-search-tree