java - 具有键值对的树找不到键

标签 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 {
        if (right != null) {
            right.find(k);
        }
    }
    return 0;
}

这在试图找到树的根时工作正常。例如,这是输入和查找键的一些输出:

enter image description here

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/

相关文章:

python - 如何在 Python 的类字典结构中对耦合值求和?

java - 创建接口(interface)的引用并将其分配给实现对象被认为是一个干净的设计决策

java - AWS Lambda 冷启动延迟的原因是什么?

java - 在 map 中,按一个字段排序并按另一个字段删除元素?

c - 为什么我的二叉树没有正确填充?

Javascript:编写一个函数,该函数接受一个数组,然后返回一个仅包含唯一数字的数组,仅删除数组

java - 为什么编译器在内部类中接受非最终变量?

java - 如何检查 Jar 文件之间的依赖关系?

css - 通过 css 更改图标

mysql - Rails Mysql 结果 - fetch_fields 方法