Ich studiere Java
, und ich habe einige Fragen:binärer Suchbaum rekursiv insert-Methode
Dies ist ein binary search tree
und ich möchte die insert
Methode erstellen. Was stimmt nicht mit dem, was ich getan habe?
Ich denke left
und right
sind Node
, aber ich weiß nicht, wie es zu benutzen, weil Node
Ich weiß, wie
public Node(int data, Node next)
Was muss ich tun?
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");
}
}
Es gibt java.lang.StackOverflowError in this.left = new BST (key); – cardiban
Ja, Sie haben ein paar Probleme in Ihrem Code, aber das ist das Konzept, ich habe meinen Code mit einigen festen –
bearbeitet Kann ich wissen, was ist Ihr Code? – cardiban