Rückblick
Ein Baum ist die erste Struktur, bei der Rekursion nicht bloß möglich, sondern die natürliche Ausdrucksform ist: Jeder Teilbaum ist selbst wieder ein Baum. Wer das einmal gesehen hat, schreibt Baumalgorithmen fast von allein.
Das kann ich jetzt
- Ich kann die Begriffe Wurzel, Knoten, Blatt, Teilbaum, Höhe und Tiefe an einem Baum zeigen. (Baumstrukturen)
- Ich kann einen Binärbaum in Preorder, Inorder und Postorder durchlaufen. (Binärbaum)
- Ich kann die Suchbaumeigenschaft prüfen und einen binären Suchbaum aufbauen. (Binärer Suchbaum)
- Ich kann erklären, warum ein Suchbaum entarten kann und was das kostet. (Binärer Suchbaum)
- Ich kann sagen, was ein AVL-Baum zusätzlich leistet. (AVL-Baum)
Gemischte Aufgaben
Aufgabe 1: Einen Baum lesen
Die Werte 50, 30, 70, 20, 40, 60, 80 werden in dieser Reihenfolge in einen zunächst leeren binären Suchbaum eingefügt.
a) Zeichne den entstehenden Baum.
b) Gib die drei Durchläufe an: Preorder, Inorder, Postorder.
c) Welche Höhe hat der Baum? Wie viele Blätter hat er?
d) Warum ist die Inorder-Ausgabe eines binären Suchbaums immer sortiert? Begründe mit der Suchbaumeigenschaft.
e) Wie viele Vergleiche braucht die Suche nach der 40? Nach der 45?
Tipp zu b)
Die Namen sagen, wann die Wurzel selbst ausgegeben wird:
- Preorder: Wurzel, dann links, dann rechts.
- Inorder: links, Wurzel, rechts.
- Postorder: links, rechts, dann Wurzel.
Der linke Teilbaum kommt immer vor dem rechten.
Aufgabe 2: Wenn der Baum entartet
Dieselben sieben Werte werden nun in aufsteigender Reihenfolge eingefügt: 20, 30, 40, 50, 60, 70, 80.
a) Zeichne den entstehenden Baum.
b) Welche Höhe hat er jetzt? Wie viele Vergleiche braucht die Suche nach der 80?
c) Welcher linearen Datenstruktur entspricht dieser Baum? Was ist von der Suchbaum-Idee übrig geblieben?
d) Ein Baum mit n Knoten hat im günstigsten Fall die Höhe log₂(n), im ungünstigsten n. Rechne beides für n = 1000 aus und vergleiche.
e) Was leistet ein AVL-Baum an dieser Stelle, und was kostet es?
f) Nenne eine Situation aus der Praxis, in der Daten typischerweise schon sortiert ankommen – und erkläre, warum das den Fall aus b) gefährlich alltäglich macht.
Aufgabe 3: Rekursiv über Bäume
Beantworte jede Teilaufgabe zuerst als Satz in der Form „Ein leerer Baum … / Sonst …", bevor du Code schreibst.
a) Wie bestimmt man die Anzahl der Knoten eines Binärbaums?
b) Wie bestimmt man seine Höhe?
c) Wie bestimmt man die Anzahl der Blätter?
d) Wie prüft man, ob ein Wert enthalten ist – einmal für einen beliebigen Binärbaum und einmal für einen Suchbaum? Worin unterscheiden sich die beiden Verfahren im Aufwand?
e) Warum ist bei Bäumen die Rekursion der Schleife klar überlegen – anders als bei den Aufgaben aus dem Rekursionskapitel?
Tipp: Das Muster
Jede dieser Fragen hat dieselbe Form:
Ein leerer Baum: <trivialer Wert>
Sonst: <etwas aus der Wurzel> kombiniert mit
<derselben Frage für links> und <derselben Frage für rechts>
Bei der Anzahl ist die Kombination ein Plus, bei der Höhe ein Maximum, beim Enthaltensein ein Oder.