我有一个存储键及其值的树。这是我的查找操作:
public int find(int k) {
System.out.println(k + " : " + this.k);
if (k == this.k) {
return 1;
}
if (k < this.k){
if (left != null) {
left.find(k);
}
} else {
if (right != null) {
right.find(k);
}
}
return 0;
}
这在试图找到树的根时工作正常。例如,这是输入和查找键的一些输出:
c 5
生成具有单个键的根节点。 (默认值为 0.0)
e 5
调用我的 find()
函数并将 5, 4, 8, 9.. 作为键。谁能告诉我为什么即使 key 输出为匹配,它们也没有返回 1?
提前致谢!
最佳答案
如果您没有在根中找到 key ,您将在左子节点或右子节点上递归调用您的方法,但您将忽略结果并返回 0
。尝试
return left.find(k);
和
return right.find(k);
此外,您返回的似乎是 1
而不是一个值;我这里只看到key相关的代码。您可能希望在此处返回一个值而不是 1
。另外,0
可以是有效值吗?如果是这样,返回 0
可能意味着您找到了 0
或者没有找到匹配项。您可能不想返回 0,而是想抛出一个 NoSuchElementException
以指示未找到它。
关于java - 具有键值对的树找不到键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33357195/