Blatt 9

Werbung
← hier tackern
Aufgabe:
Punkte:
Korrektor(in):
1
2
3
4
5
P
Übung zur Vorlesung: Algorithmen und Datenstrukturen
Blatt 9, Abgabe: bis 16.12.2016 um 8:30 Uhr in den Briefkästen auf 25.13.O2.
Benutzerkennung:
Name:
Gruppe:
Aufgabe 1 (5 Punkte):
Gegeben folgender binärer Suchbaum:
1. Geben Sie die Schlüssel in Hauptreihenfolge (en. pre-order) an:
2. Geben Sie die Schlüssel in Nebenreihenfolge (en. post-order) an:
3. Geben Sie die Schlüssel in symmetrischer Reihenfolge (en. in-order) an:
4. Geben Sie den symmetrischen Nachfolger des Knotens mit Schlüssel 10 an:
5. Geben Sie den symmetrischen Vorgänger des Knotens mit Schlüssel 10 an:
Aufgabe 2 (25 Punkte):
Gegeben sei ein geordneter, binärer Suchbaum T mit Wurzel w, insgesamt n Knoten und
Höhe h, in dem ganzzahlige Schlüssel gespeichert sind. Dabei bezeichne v.key den an
Knoten v gespeicherten Schlüssel, v.left und v.right den linken bzw. den rechten Sohn
von Knoten v. Geben Sie für die folgenden Aufgabenstellungen je eine Implementierung in
Pseudocode an, die die geforderte Laufzeit hat. Beschreiben sie zusätzlich jeweils kurz die
Idee / Arbeitsweise Ihrer Algorithmen.
1. Berechnung aller Schlüsselanzahlen in O(n): An jedem Knoten v soll in einer Variablen v.size die Anzahl der Schlüssel in dem Teilbaum mit Wurzel v gespeichert
werden.
2. Für eine gegebene Zahl k soll in Zeit O(h) berechnet werden, wieviele Schlüssel in T
kleiner als k sind. Sie können dazu annehmen, dass der Algorithmus aus 1. bereits
durchgeführt wurde.
3. Für zwei gegebene Zahlen a und b, a < b, soll in Zeit O(h) berechnet werden, wieviele Schlüssel aus dem offenen Intervall ]a, b[ in T enthalten sind. Sie können dazu
annehmen, dass der Algorithmus aus 1. bereits durchgeführt wurde.
Tipp: Wenn Sie noch nicht viel Programmiererfahrung haben, dann ist diese Aufgabe
gut geeignet, um sie zusätzlich in einer Programmiersprache Ihrer Wahl tatsächlich zu
implementieren - denn Programmieren lernt man nur dadurch, dass man es selber macht!
Aufgabe 3 (20 Punkte):
In einen binären Suchbaum sollen die Schlüssel 1, 2, . . . , n eingefügt werden. Geben Sie je
eine Einfügereihenfolge an, so dass die Höhe des entstehenden Baums
1. in Θ(n)
2. in Θ(log(n))
liegt. Zur Vereinfachung der Notation können Sie annehmen, dass n eine 2er Potenz ist,
also n = 2m für ein m ∈ N. Skizzieren Sie ebenfalls die entstehenden Bäumen.
Aufgabe 4 (25 Punkte):
1. Geben Sie den AVL-Baum an, der durch Einfügen der Schlüssel 5, 4, 3, 1, 2 in
den anfangs leeren Baum entsteht. Geben Sie den (neu) ausbalancierten Baum nach
jedem Einfügen an.
2. Gegeben folgender AVL Baum:
(a) Geben Sie für jeden inneren Knoten den Balancewert an.
(b) Fügen Sie erst den Schlüssel 15 und dann Schlüssel 8 in den Baum ein. Geben
Sie den (neu) ausbalancierten Baum nach jedem Einfügen an.
(c) Wie viele Rotationen haben Sie benötigt um den Schlüssel 15 einzufügen und
den Baum anschließend wieder zu balancieren?
3. Entfernen Sie aus folgendem AVL-Baum nacheinander die Schlüssel 4, 12, 16 und 11.
Falls Sie die Wahl haben, mit welchem Schlüssel sie einen anderen Schlüssel ersetzen,
wählen Sie den größeren dieser Schlüssel.
4. Hatten Sie beim Entfernen eines der Schlüssels eine Wahl, mit welchem Schlüssel Sie
diesen vertauschen? Wenn ja, bei welchem, und welcher Schlüssel wäre die Alternative
gewesen?
Aufgabe 5 (25 Punkte):
1. Skizzieren Sie den Splay-Baum, der durch Einfügen der Schlüssel 1, 2, 3, ..., n in
einen leeren Splay-Baum entsteht. Geben Sie als Zwischenschritte die Bäume jeweils
nach dem Einfügen der Schlüssel 1, 2 und 3 an.
Den folgenden Baum nennen wir T .
2. Suchen Sie Schlüssel 7 in T . Geben Sie den Baum an, welcher sich ergibt.
3. Fügen Sie nacheinander die Schlüssel 8, 2 und 6 in T ein. Geben Sie den Baum
nach jedem Einfügen sowie eine Liste der durchgeführten zig, zig-zig und zig-zag
Operationen an.
4. Entfernen Sie die Schlüssel 13 und 5 aus T . Geben Sie den Baum nach jedem Entfernen sowie alle durchgeführten Splay-Operationen (Splay(T, X)) an.
Hinweis: Die Teilaufgaben 2. bis 4. beziehen sich alle auf den oben gegebenen Baum T. Die
Änderungen, die durch die Teilaufgaben 2.- 4. gemacht werden, sollen bei den folgenden
Aufgaben (3./4.) nicht berücksichtigt werden. Auf diese Art vermeiden wir, dass wir die
Teilaufgaben aufgrund vorangegangener falscher Ergebnisse nicht mehr werten können.
Herunterladen