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
调用my
find()
函数并接收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,以指示未找到它。

很漂亮,正是我缺少的。谢谢我感谢您的意见,不过这是作业的一部分,我们被要求返回这些结果。一个单独的函数返回值。很漂亮,正是我缺少的。谢谢我感谢您的意见,不过这是作业的一部分,我们被要求返回这些结果。一个单独的函数返回该值。