-2
我學習Java
,和我有一些問題:二叉搜索樹遞歸插入方法
這是一個binary search tree
,我想創建insert
方法。我做了什麼錯?
我覺得left
和right
是Node
,但我不知道如何使用它,因爲Node
我知道像
public Node(int data, Node next)
我有什麼做的?
public class BST {
private Comparable key;
private BST left, right;
public BST(Comparable key) {
this.key = key;
this.left = null;
this.right = null;
}
public boolean insert(Comparable key) {
if (key.compareTo(this.key) < 0) {
if (this.left == null) {
System.out.println(key + " : insert success");
this.left = left;
return true;
} else {
insert(key);
}
} else if (key.compareTo(this.key) > 0) {
if (this.right == null) {
this.right = right;
System.out.println(key + " : insert success");
return true;
} else {
insert(key);
}
}
System.out.println(key + " : insert fail");
return false;
}
public static void main(String[] args) {
BST b = new BST("B");
System.out.println("========== insert ==========");
b.insert("G");
b.insert("D");
b.insert("K");
b.insert("A");
b.insert("D");
b.insert("J");
b.insert("H");
b.insert("C");
b.insert("A");
b.insert("F");
b.insert("E");
b.insert("N");
}
}
this.left = new BST(key);中存在java.lang.StackOverflowError; – cardiban
是的,你有你的代碼中的幾個問題,但這是概念,我修改了一些我的代碼 –
我可以知道你的代碼是什麼嗎? – cardiban