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



你好,我写这个方法是为了在二进制搜索树中搜索值,但无论值是否在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;  

}

没有更多的输入,这就是我能做的一切。您一开始忘记将subRoot分配给root。在循环中将值分配给根,这将导致数据丢失,很可能导致无限循环。另外,你的else语句没有刹车,所以如果你进入循环,它总是会返回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;  
}

问题是,在while循环之前用null初始化subRoot,因此当您检查条件时,它将始终为false,因此将转到函数的末尾

最新更新