Technische Universität Wien
Institut für Computergraphik und Algorithmen
Arbeitsbereich für Algorithmen und Datenstrukturen
184.253 Algorithmen und Datenstrukturen 1 VL 4.0
Übungsblatt 3
für die Übung am Montag 11. bzw. Dienstag 12. Dezemberr 2006
Aufgabe 3.1
Bestimmen Sie eine Folge von 12 Zahlen, die – wenn sie in genau der vorgegebenen Reihenfolge eingefügt werden – zu einem binärer Suchbaum führen, der folgende Eigenschaften
besitzt:
• Der Baum hat Tiefe 9.
• Jeder Knoten, der ein rechter Sohn seines Vaters ist, besitzt kein linkes Kind.
• Jeder Knoten, der ein linker Sohn seines Vaters ist, besitzt kein rechtes Kind.
Aufgabe 3.2
Löschen Sie aus dem abgebildeten binären Suchbaum in der angegebenen Reihenfolge die
Knoten 20, 16 und 5. Zeichnen Sie den Baum nach jeder Löschung eines Knotens.
15
5
3
16
12
10
20
13
6
18
17
7
8
23
22
2
Aufgabe 3.3
Bei einer In-Order-Traversierung eines gegebenen binären Baumes ergibt sich folgende Knotenliste:
0, 1, 3, 5, 6, 7, 8, 10, 11, 13, 17, 18.
Bei einer Pre-Order-Traversierung des gleichen Baumes ergibt sich:
8, 5, 1, 0, 3, 7, 6, 11, 10, 17, 13, 18.
Zeichnen Sie den zugrundeliegenden Baum und tragen Sie die entsprechenden Knotenwerte
ein.
Aufgabe 3.4
In der Vorlesung (im Skriptum) haben Sie die nicht-rekursive Variante der Binären Suche
kennengelernt. Entwickeln Sie nun den Pseudocode für eine rekursive Variante. Visualisieren
Sie Ihren Algorithmus anhand der folgenden Beispielfolge:
A, C, F, G, H, I, K, M, N, P, Q, S, T, V, W, X, Z
Geben Sie jeden rekursiven Aufruf Ihres Algorithmus mit den aktuellen Grenzen (links,
rechts) an und markieren Sie die Grenzen und das jeweilige mittlere Element in der folgenden
Tabelle. Gesucht wird der Schlüssel V .
Aufruf (Grenzen)
A
C
F
G
H
I
K
M
N
P
Q
S
T
Hinweis: Die richtige Lösung benötigt nicht unbedingt alle Zeilen der Tabelle.
V
W
X
Z
3
Aufgabe 3.5
Ab wie vielen Suchanfragen lohnt sich eine Binäre Suche (inklusive der dafür notwendigen
Sortierung) im Vergleich zu einer sequentiellen Suche in einem Feld der Länge n? Gehen
Sie vom Worst-Case aus!
Geben Sie für n = 8 die Anzahl der Suchanfragen an, ab der die Binäre Suche effizienter
arbeitet!
Aufgabe 3.6
Gegeben ist ein binärer Suchbaum T , in dem Fließkomma-Zahlen abgespeichert sind. Sei
B die Menge der Zahlen, die in dem Baum abgelegt sind. Gehen Sie davon aus, dass alle
Zahlen im Baum paarweise verschieden sind. Schreiben Sie ein Programm in Pseudocode,
welches ein Paar (a, b) von Schlüsseln in B findet, bei dem |a−b| minimal unter allen Paaren
von Schlüsseln in B ist.
Ihr Programm soll den Baum nur ein Mal durchlaufen und keine Listen oder Arrays verwenden. Sie dürfen Funktionen wie Maximum, Minimum, Predecessor und Successor,
die in er Vorlesung behandelt wurden, als Black Box benutzen, ohne ihren Code anzugeben.
Aufgabe 3.7
Gegeben sei folgender AVL-Baum direkt nach dem Einfügen eines neuen Elements:
10
8
6
2
16
14
22
18
Ist die AVL-Eigenschaft in diesem Baum verletzt? Falls ja, führen Sie die notwendigen Maßnahmen durch, um die AVL-Bedingung wieder herzustellen, und zeichnen Sie den Baum in
seinem korrigierten Zustand.
Führen Sie danach folgende Operationen in diesem AVL-Baum in der angegebenen Reihenfolge durch und zeichnen Sie den Baum nach jeder Operation. Achten Sie darauf, dass die
AVL-Eigenschaft immer erhalten bleibt.
4
a) Fügen Sie 19 in den AVL-Baum ein.
b) Fügen Sie 7 in den AVL-Baum ein.
c) Löschen Sie 22 aus dem AVL-Baum.
d) Fügen Sie 13 in den AVL-Baum ein.
Aufgabe 3.8
Gegeben sei ein AVL-Baum T mit n Knoten, in denen die Schlüssel S = {s1 , s2 , . . . , sn }
gespeichert sind. Der AVL-Baum sei entstanden, indem die Schlüsselmenge S in einer bestimmten Reihenfolge in einen anfänglich leeren Baum eingefügt wurden. In der Regel
müssen hierbei einige Rotationsoperationen durchgeführt werden. Gibt es zu jedem solchen
Baum T eine Einfügereihenfolge der Schlüsselmenge S, die zum gleichen AVL-Baum T
führt, jedoch keine einzige Rotation notwendig macht? Beweisen oder widerlegen Sie Ihre
Vermutung.
Aufgabe 3.9
Wie ist beim Einfügen eines Schlüssels in einen B-Baum der Ordnung 7 vorzugehen, wenn
der Knoten, der den neuen Schlüssel aufnehmen soll, bereits 6 Schlüssel enthält? Erklären
Sie den Vorgang und zeichnen Sie eine entsprechende Skizze.
Aufgabe 3.10
Fügen Sie die Folge
h1, 2, 3, 4, 15, 14, 7, 8, 9, 12, 11i
in genau dieser Reihenfolge in einen anfangs leeren B-Baum der Ordnung 4 ein. Zeichnen
Sie den B-Baum jeweils nach dem Einfügen eines Schlüssels.
Fügen Sie nun die Schlüssel in einen AVL-Baum und dann in einen Binären Suchbaum ein
und zeichnen Sie diese. Vergleichen Sie anhand Ihrer Ergebnisse die drei Baumarten.