Java 具有键值对的树找不到键
我有一个存储键及其值的树。以下是我的查找操作:Java 具有键值对的树找不到键,java,tree,key,Java,Tree,Key,我有一个存储键及其值的树。以下是我的查找操作: 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 {
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;
}
public int find(int k){
System.out.println(k+“:”+this.k);
如果(k==this.k){
返回1;
}
if(k
当尝试查找树的根时,这可以很好地工作。例如,以下是输入和查找键的一些输出:
c5
使用单个键生成根节点。(默认值为0.0)
e5
调用myfind()
函数并接收5,4,8,9。。作为关键。有谁能告诉我,为什么即使密钥作为匹配输出,它们也不返回1
提前谢谢 如果在根中找不到键,则在左或右子级上递归调用方法,但忽略结果并返回
0
。试一试
return left.find(k);
及
此外,您返回的似乎是
1
,而不是值;我在这里只看到与键相关的代码。您可能希望在此处返回值,而不是1
。另外,0
是否可以是有效值?如果是这样,返回0
可能意味着您找到了0
,或者您没有找到匹配项。与其返回0,不如抛出一个NoTouchElementException
,以指示找不到它。如果在根中找不到键,则在左或右子级上递归调用方法,但忽略结果并返回0
。试一试
return left.find(k);
及
此外,您返回的似乎是
1
,而不是值;我在这里只看到与键相关的代码。您可能希望在此处返回值,而不是1
。另外,0
是否可以是有效值?如果是这样,返回0
可能意味着您找到了0
,或者您没有找到匹配项。您可能希望抛出一个NoSuchElementException
,而不是返回0,以指示未找到它。很漂亮,正是我缺少的。谢谢我感谢您的意见,不过这是作业的一部分,我们被要求返回这些结果。一个单独的函数返回值。很漂亮,正是我缺少的。谢谢我感谢您的意见,不过这是作业的一部分,我们被要求返回这些结果。一个单独的函数返回该值。