Hallo,
wenn ich richtig verstanden habe, möchtest du die Methoden einfügen, contains, und traversieren programmieren. Das in-Order Traversieren gibt eine sortierte Liste aller enthaltenen Elemente zurück.
Hier mal ein kleiner Ansatz der dir vielleicht hilfreich sein kann
public class Tree<E extends Comparable<E>> {
protected Tree<E> right, left;
protected E element;
public Tree(E element) {
this.element = element;
}
public void insert(E element)
{
if (this.element.compareTo(element) < 0)
{
if (left != null)
{
left.insert(element);
}
else
{
left = new Tree<E>(element);
}
}
else
{
if (right != null)
{
right.insert(element);
}
else
{
right = new Tree<E>(element);
}
}
}
public boolean contains(E element)
{
if (element.equals(element))
{
return true;
}
else
{
if (this.element.compareTo(element) < 0)
{
if (left != null)
{
return left.contains(element);
}
else
{
return false;
}
}
else
{
if (right != null)
{
return right.contains(element);
}
else
{
return false;
}
}
}
}
public java.util.LinkedList<E> sortiere()
{
java.util.LinkedList<E> erg = new java.util.LinkedList<E>();
if(left!=null)erg.addAll(left.sortiere());
erg.add(element);
if(right!=null)erg.addAll(right.sortiere());
return erg;
}
}
Die Klasse Baum die du oben vorgestellt hast ist nicht wirklich gut, denn die Attribute müssten protected sein, damit du ja in deiner Klasse Suchbaum einfach auf den linken bzw. rechten Teilbaum zugreifen kannst, ohne über diese verrückten getter Methoden darauf zugreifen zu müssen.
Sinnvoll könnte es sein, den Suchbaum als AVL-Baum zu programmieren, da dieser effizient ist in der Suche. Hier wird immer eine Ordnung eingehalten, dass heißt das beim Einfügen/Löschen immer geguckt wird, ob die balance noch gegeben ist um dann evtl. diese durch Rotationen wiederherzustellen.