我正在尝试创建一个能够插入给定数字的BST程序,然后通过说出true或false来告诉用户该号码是否在BST中。但是,即使插入了数字,它也始终注册为false。谁能告诉我这里哪里出错了?如果需要,我可以提供其余的类文件。
public class BinarySearchTree implements BST
{
private int n;
private Node r;
private Node l;
public void enter(int num)
{
Node node = new Node(num);
if (num < node.getData())
{
if (node.getL() != null)
{
insert(num);
}
else
{
node.setL(new Node(num));
}
}
else if (num > node.getData())
{
if (node.getR() != null)
{
insert(num);
}
else
{
node.setR(new Node(num));
}
}
}
public boolean search (int num)
{
if (num == this.n)
{
return true;
}
else if (num > this.n)
{
if (r == null)
{
return false;
}
else
{
return true;
}
}
else if (num < this.n)
{
if (l == null)
{
return false;
}
else
{
return true;
}
}
return false;
}
}
答案 0 :(得分:0)
您
insert(num);
向左和向右,是否插入()检查是否必须再次向左或向右移动?
node
已使用但未在任何地方声明。
你希望得到这个想法,发布整个事情。
此外,虽然你的问题是假的。你的代码更经常地返回true方式(并且技术上不应该返回true,因为num&gt; this.n并且我们得到了一个正确的OR左)。所以你的第一个问题是你的树的构建,这对你来说是错误的,一旦你修复它,修复搜索。
答案 1 :(得分:0)
如果这不是同事或类似的东西: 使用实现红黑树的TreeSet
Set<Number> numbers = new TreeSet<Number>();
numbers.add(...);
if (numbers.contains(...)) {
...
}
答案 2 :(得分:0)