我想使用迭代在二叉搜索树中搜索值
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;
}
你好,我写了这个方法来在我的二叉搜索树中搜索值,但是无论是否在我的 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;
}