我想使用迭代在二叉搜索树中搜索值

I want to search for values in binary search tree using iteration

你好,我写了这个方法来在我的二叉搜索树中搜索值,但是无论是否在我的 bst 中找到该值,它总是返回 false。谁能告诉我我的错误是什么以及我该如何解决。

    public boolean search(int key) {
    BinaryTreeNode subRoot = null;
          
        while (subRoot != null)  
        {  
             
            if (key > subRoot.getData()) {
                root = subRoot.getRight();  
            }
             
            else if (key < subRoot.getData())  
                root = subRoot.getLeft();  
            else
                System.out.println("Searching for " + key + ": found");
                return true; 
        }  
        System.out.println("Searching for " + key + ": NOT found");
        return false;  
    
}

问题是你在 while 循环之前用 null 初始化 subRoot,所以当你检查条件时它总是 false,因此要到函数的末尾

没有更多的输入这是我能做的一切。 您忘记在开始时将 subRoot 分配给 root 。 您在这里为循环中的根分配值,这会导致数据丢失,很可能会导致 infinite-loop。 另外,您的 else 语句没有括号,因此如果您进入循环,它总是 return true。

public boolean search(int key) {
BinaryTreeNode subRoot = root;
      
    while (subRoot != null)  
    {  
         
        if (key > subRoot.getData()) 
            subRoot = subRoot.getRight();             
        else if (key < subRoot.getData())  
            subRoot = subRoot.getLeft();  
        else{
            System.out.println("Searching for " + key + ": found");
            return true;
        } 
    }  
    System.out.println("Searching for " + key + ": NOT found");
    return false;  

}