java - BST 包含在 JAVA 中无法正常工作的方法

标签 java recursion binary-search-tree

我正在编写一个方法来查看 BST 中是否存在某个值。

 public boolean contains(int val){
        return containsHelper(val, root);
    }
    public boolean containsHelper(int val, Node root){


        if(val < root.val && root.left != null) {
            containsHelper(val, root.left);
        }
        else if(val > root.val && root.right != null) {
            containsHelper(val, root.right);
        }
        else { //theyre equal
            return true;
        }

        return false;

    }

我不明白为什么我的方法不起作用,它进入了它们相等的其他地方,但仍然返回 false。

最佳答案

考虑添加一个明确的基本情况。以及当您想要返回 true 时的明确情况。

public boolean contains(int val){
    return containsHelper(val, root);
}
public boolean containsHelper(int val, Node root){
    if(root == null) return false;

    if(root.val == val) return true;
    else if (root.val < val) {
        return containsHelper(val, root.right);
    }else {
        return containsHelper(val, root.left);
    }
}

关于java - BST 包含在 JAVA 中无法正常工作的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32752598/

相关文章:

使用递归函数反转字符串的概念

java - 打印 Java 二叉搜索树

java - Android 空指针屏幕 slider (viewpager)

excel - 通过 DXL 递归列出文件夹中的所有 DOORS 模块并写入 Excel Sheet

java - 递归将同心圆压缩 10%,同时保持相对于中心的位置

具有 3 个结构值的 C++ 二叉树

c++ - 从数组 C++ 初始化平衡二叉搜索树

java - 如何在拖放过程中显示图标

java - 数据库调用后弹出对话框的时机

java - 在 Java 中的线程内启动线程