[英]Binary Search Tree searching in java
我試圖制作一個能夠插入給定號碼的BST程序,然后通過說是或否來告訴用戶號碼是否在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;
}
}
您
insert(num);
無論是在左側還是右側,insert()都會檢查它是否必須再次向左或向右移動嗎?
node
用於但未在任何地方聲明。
並希望您將其發布,然后發布整個內容。
同樣,當您的問題返回false時。 您的代碼返回真值的可能性要大得多(從技術上講,不應該僅僅因為num> this.n而返回真或左)。 因此,您的第一個問題是樹的構建,一旦得到錯誤,修復錯誤后,就可以修復搜索。
如果這不是單身漢或類似的東西:使用實現Red-Black-Tree的TreeSet
Set<Number> numbers = new TreeSet<Number>();
numbers.add(...);
if (numbers.contains(...)) {
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.