我有一个存储密钥及其值的树.这是我的查找操作:
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;
}
Run Code Online (Sandbox Code Playgroud)
这在尝试查找树的根时工作正常.例如,以下是输入和查找键的一些输出:
c 5使用单个密钥生成根节点.(默认值为0.0)
e 5调用我的find()函数并输入5,4,8,9 ..作为键.任何人都可以告诉我为什么,即使键输出为匹配,它们也不会返回1?
提前致谢!
如果在根目录中找不到密钥,则在左或右子项上递归调用方法,但是忽略结果并返回0.尝试
return left.find(k);
Run Code Online (Sandbox Code Playgroud)
和
return right.find(k);
Run Code Online (Sandbox Code Playgroud)
此外,它似乎是你返回1而不是一个值; 我这里只看到与密钥相关的代码.您可能希望在此处返回值而不是1.另外,可以0是有效值吗?如果是这样,返回0可能意味着您找到了0或者您找不到匹配项.而不是返回0,你可能想要抛出一个NoSuchElementException表示它没有找到.
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |