0
可以comeone請幫助我。我試圖添加元素到二叉搜索樹,但它不起作用。它似乎是它只添加第一個數字作爲根元素,然後它不再添加任何東西。這是代碼。將元素添加到二叉搜索樹
主要方法:
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int a = 1;
int v, b, c;
TNode1 j = new TNode1(0, null, null);
BST1 s = new BST1();
while (a == 1) {
System.out.println("1.Add numeber\n2.Print\n3.Stop");
v = kb.nextInt();
switch (v) {
case 1:
System.out.println("Give a number");
b = kb.nextInt();
s.insert(b);
break;
case 2:
s.Print();
break;
case 3:
break;
}
}
}
在BST1類:
public void insert(int x) {
if (root == null) {
root = new TNode1(x, null, null);
lastFound = root;
} else {
lastFound = root.insert(x);
}
}
在TNODE類:
protected int element;
protected TNode1 left;
protected TNode1 right;
public TNode1 insert(int x) {
if (x < element) {
if (left == null) {
left = new TNode1(x, null, null);
return left;
} else
return left.insert(x);
} else if (x > element) {
if (right == null) {
right = new TNode1(x, null, null);
return right;
} else
return right.insert(x);
} else
return this;
}
這裏是打印方法:
在BST1類:
public void Print()
{
root.Print();
System.out.println(".");
}
在TNode1類:
public void Print()
{
System.out.print("(");
if (left != null)
{
left.Print();
System.out.print(this);
}
if (right != null)
{
right.Print();
System.out.print(")");
}
}
關於第一個注意事項,如果'BST1'是'TNode1'周圍的包裝類,那麼'insert(int x)'應該在'BST1'類中執行,而不是在'TNode1'中。另外,'BST'和'Node'似乎是我的好名字 –
我還沒有嘗試過,但它看起來像工作正常。你是怎麼知道它不再添加任何東西的?你的'Print()'方法是否正確實現?你也可以顯示'Print()'方法嗎?! –
感謝您的回答!我將打印方法添加到原始帖子中。 @AnandUndavia – Hemuli