Binäre Suchbäume (auch: sortierte Binärbäume oder geordnete Binärbäume) sind Binärbäume, die zusätzlich sortiert (bzgl. eines bestimmten Merkmals, z.B. Größe) sind:
Die Inhalte der linken Nachfolger eines Knotens sind dabei immer (bzgl. der gewählten Ordnung) kleiner und die Inhalte der rechten Nachfolger sind immer größer als der Inhalt des aktuellen Knotens.
Dazu ist in der Inhaltsklasse zusätzlich eine Methode größerAls
notwendig, die den Rückgabewert true
, besitzt, falls das aktuelle Objekt größer als das übergebene Objekt ist und ansonsten false
:
public boolean größerAls(Inhalt i)
Hier beispielhafte Implementierungen der Methode ''größerAls''.
Ein binärer Suchbaum mit int
-Werten könnte folgenden Aufbau haben:
Ergänze den binären Suchbaum um folgende Methoden:
int anzahl()
)boolean istEnthalten(int n)
)Zum Durchlaufen (Traversierung) eines binären Suchbaums sind verschiedene Varianten üblich. An dieser Stelle werden beispielhaft drei bedeutende Varianten genannt:
Es wird rekursiv zuerst der linke Teilbaum durchlaufen, dann der aktuelle Knoten besucht und anschließend der rechte Teilbaum.
Es wird zuerst der aktuelle Knoten besucht, dann werden rekursiv der linke und der rechte Teilbaum durchlaufen.
Es wird zuerst rekursiv der linke Teilbaum, dann der rechte Teilbaum durchlaufen und dann der aktuelle Knoten besucht.
InOrder | PreOrder | PostOrder |
---|---|---|
Archäologie | Informatik | Archäologie |
Biologie | Biologie | Chinesisch |
Chemie | Archäologie | Chemie |
Chinesisch | Chemie | Biologie |
Informatik | Chinesisch | Latein |
Latein | Mathematik | Sport |
Mathematik | Latein | Spanisch |
Spanisch | Spanisch | Mathematik |
Sport | Sport | Informatik |
Aufgabe 2
Ergänze den binären Suchbaum um die Methoden
void traversePreOrder()
void traversePostOrder()
Als Höhe des Binärbaumes bezeichnet man die Anzahl der enthaltenen "Ebenen", d.h. die maximale Anzahl der Ebenen von der Wurzel bis zu einem Abschluss. Ein vollständig gefüllter Binärbaum der Höhe $n$ hat $2^n - 1$ Elemente.
Ein Binärbaum mit möglichst wenigen Ebenen heißt balancierter Binärbaum.
Der Baum rechts hat die Höhe 3.
Aufgabe 3:
Ermittle, wie viele Ebenen ein balancierter binärer Suchbaum mit
Elementen besitzt.
Hier geht's zur Lösung!
Aufgabe 5:
Gib einen binären Suchbaum an (als Text oder als Grafik, z.B. mit UMLet), der folgende Ausgabereihenfolge erzeugt:
Aufgabe 6:
In einen (leeren) binären Suchbaum sollen folgende Einträge eingefügt werden:
15, 46, 1, 28, 100, 99, 3
Gib jeweils eine Einfügereihenfolge an, bei der der binäre Suchbaum maximale (d.h. 7) bzw. minimale (d.h. 3) Höhe hat. Finde eine allgemeine Strategie für die minimale Höhe.
Hier geht's zur Lösung!
Aufgabe 7:
Erstelle eine Methode public int hoehe()
, die die Höhe des binären Suchbaums zurückgibt.
Hier geht's zur Lösung!