Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel Carsten Gutwenger, André Gronemeier, Anna-Lena Lamprecht, Tobias Marschall, Hubert Wagner, Hoi-Ming Wong Sommersemester 2008 DAP2 Übung – Blatt 8 Ausgabe: 29. Mai — Abgabe: 5. Juni, 14h Globalübung: Fr. 13. Juni Aufgabe 8.1 (5 Punkte) Gib für jeden der folgenden Binärbäume an, ob es sich um einen AVL-Baum handelt. Falls nicht, begründe Deine Antwort. Aufgabe 8.2 (5 Punkte) Bei der Traversierung von Binärbäumen sind die unten stehenden Zahlenfolgen entstanden. Lassen sich die zugehörigen Binärbäume eindeutig rekonstruieren? Falls ja, zeichne den entsprechenden Binärbaum und begründe kurz, warum dieser eindeutig ist. Falls nein, gib zwei verschiedene Binärbäume an, dessen Traversierung zu den gegebenen Zahlenfolgen führt. • Baum 1: In-Order: 2, 0, 9, 4, 8, 3, 1, 6, 5, 7; Pre-Order: 3, 4, 0, 2, 9, 8, 6, 1, 5, 7. • Baum 2: Pre-Order: 5, 4, 3, 0, 6, 1, 2, 9, 7, 8; Post-Order: 3, 6, 0, 4, 9, 7, 2, 8, 1, 5. Hinweis: In dieser Aufgabe geht es um Binärbäume, diese müssen nicht unbedingt binäre Suchbäume sein. Aufgabe 8.3 (5 Punkte) Betrachte folgenden AVL-Baum: Aus diesem Baum soll der Knoten 0 gelöscht und der Baum rebalanciert werden. Zeichne den Baum nach jedem Schritt (wir sehen die Operationen Löschen, Links-Rotation und RechtsRotation jeweils als einen Schritt an). Schreibe dabei an jeden Knoten seine Balance (wie im Bild oben). Aufgabe 8.4 (5 Punkte) Gegeben sei ein beliebiger Schlüssel x und ein binärer Suchbaum mit der Höhe h. Gib Pseudocode für einen Algorithmus an, der den größten Schlüssel y im Suchbaum findet, für den y ≤ x gilt. Falls der Baum keinen solchen Schlüssel y enthält, ist nil zurückzugeben. Der Algorithmus soll eine Laufzeit von O(h) haben. Erläutere kurz, warum Dein Algorithmus korrekt ist und die geforderte Laufzeit hat. Bonusaufgabe 8.5 (4 Bonuspunkte) Gib Pseudocode für einen Algorithmus an, der für einen gegebenen binären Suchbaum prüft, ob es sich um einen AVL-Baum handelt. Hierbei ist es dem Algorithmus erlaubt, an Knoten des Baumes zusätzliche Informationen zu speichern und wieder auszulesen. Der Algorithmus soll eine Laufzeit von O(n) haben. Bonusaufgabe 8.6 (3 Bonuspunkte) Beweise formal, dass jeder binäre Suchbaum mit n Knoten mit O(n) Rotations-Operationen in jeden anderen binären Suchbaum mit denselben Schlüsseln überführt werden kann. Powodzenia! – das DAP2-Team