Hallo.
Ich habe Probleme den binären Suchbaum nachzuvollziehen. Ich verstehe bei der Methode insertNode in der Klasse Searchtree nicht, wie damit ein Baum aufgebaut wird.
Hier die Inhalte und das Comparable implentiert:
Hier von welchem Typen das ist. Und natuerlich die Verzweigungen.
Ich bin die Sache durchgegangen Methode insertNode:
Erstes Element Hinzufuegen: root wird Werte etc zugewiesen
Zweites Element Hinzufuegen: erhalte ich als Ergebnis parent.left=new SearchTreeNode(c,null,null); oder parent.right=new SearchTreeNode(c,null,null);
Drittes Element Hinzufuegen: parent=null, child=root; dann immer noch danach parent=child; kann ich doch gar keinen Baum aufbauen???
Oder wo bleibt das zweite Element erhalten? Es verschwindet doch wieder.
Oder hat das was mit dem boolean zu tun?? Ich sehe fuer das boolean gar keine Bedeutung.
Hier z B was hinzfuegen zum Suchbaum in der main:
Ich habe Probleme den binären Suchbaum nachzuvollziehen. Ich verstehe bei der Methode insertNode in der Klasse Searchtree nicht, wie damit ein Baum aufgebaut wird.
Hier die Inhalte und das Comparable implentiert:
Java:
public class Person implements Comparable {
String name;
String address;
public Person(String n, String a) {
name = n;
address = a;
}
public int compareTo(Object o) {
return name.compareTo(((Person)o).name);
}
}
Hier von welchem Typen das ist. Und natuerlich die Verzweigungen.
Java:
public class SearchTreeNode {
Comparable element; // Objekt
SearchTreeNode left,right; // Verzeigerung
public SearchTreeNode(Comparable e, SearchTreeNode l, SearchTreeNode r) {
element = e;
left = l;
right = r;
}
}
Ich bin die Sache durchgegangen Methode insertNode:
Erstes Element Hinzufuegen: root wird Werte etc zugewiesen
Zweites Element Hinzufuegen: erhalte ich als Ergebnis parent.left=new SearchTreeNode(c,null,null); oder parent.right=new SearchTreeNode(c,null,null);
Drittes Element Hinzufuegen: parent=null, child=root; dann immer noch danach parent=child; kann ich doch gar keinen Baum aufbauen???
Oder wo bleibt das zweite Element erhalten? Es verschwindet doch wieder.
Oder hat das was mit dem boolean zu tun?? Ich sehe fuer das boolean gar keine Bedeutung.
Java:
public class SearchTree {
SearchTreeNode root=null;
public boolean insertNode(Comparable c) {
SearchTreeNode parent=null, child=root;
// Blatt suchen, nachdem eingefuegt wird
while(child!=null) {
parent=child;
int cmp = c.compareTo(child.element); // Vergleich
if (cmp==0) {return false; } // Element doppelt?
else if (cmp<0) {child=child.left; } // links einfuegen
else {child=child.right; } // rechts einfuegen
}
// Einfuegen: root, links oder rechts
if (parent==null)
root=new SearchTreeNode(c,null,null);
else if (c.compareTo(parent.element)<0)
parent.left=new SearchTreeNode(c,null,null);
else
parent.right=new SearchTreeNode(c,null,null);
return true;
}
}
Hier z B was hinzfuegen zum Suchbaum in der main:
Java:
public class TestSearchTree {
public static void main(String[] args) {
Person p1 = new Person("Meier", "Holzweg 10");
Person p2 = new Person("Mueller", "Holzweg 11");
Person p3 = new Person("Mueller", "Wo anders");
Person p4 = new Person("Schulze", "Holzweg 77");
SearchTree st=new SearchTree();
st.insertNode(p1); st.insertNode(p4);
st.insertNode(p2); st.insertNode(p3);
}
}