http://www.mpi-sb.mpg.de/~sschmitt/info5-ss01 IS UN R S SS 2001 E R SIT S Schmitt, Schömer SA IV A Grundlagen zu Datenstrukturen und Algorithmen A VIE N 9. Übungsblatt Abgabetermin: Montag, 11. Juni 2001 vor der Vorlesung Aufgabe 1 (10 + 10 Punkte) Gegeben sei ein binärer Suchbaum von Elementen des Typs T . Wir betrachten Rechtsrotation und Linksrotation auf den Knoten des Baumes. u v rotate_right v u C A rotate_left A B B C a) Implementieren Sie rotate_right. b) Wie ändert sich die Tiefe der einzelnen Knoten im Baum durch ein rotate_right? Aufgabe 2 (10 + 10 Punkte) Gegeben seien die Zahlen 17, 13, 10, 24, 26, 8, 27, 31, 35, 5, 6, 32, 42, 9, 1. a) Geben Sie den binären Suchbaum an, den man erhält, wenn man auf die obige Eingabenfolge wiederholt insert aus der Vorlesung anwendet. b) Zeigen Sie, wie man aus dem binären Suchbaum aus Teil a) unter Anwendung von Linksund Rechtsrotationen einen balancierten binären Suchbaum bilden kann. Geben Sie dabei die einzelnen Rotationsschritte an. Aufgabe 3 (10 Punkte) Gegeben sei ein balancierter binärer Suchbaum mit n Knoten, die Elementen aus Z entsprechen. Zeigen Sie, wie man in O(log n) Zeit bestimmen kann, wieviele Elemente aus dem Bereich [a, b] für a, b ∈ Z, a < b der Baum enthält. Sie dürfen dafür die Implementierung binärer Suchbäume aus der Vorlesung ändern. Aufgabe 4 (10∗ + 5∗ + 5∗ Punkte) Ein Rot-Schwarz Baum ist ein binärer Suchbaum, bei dem jeder Knoten noch ein zusätzliches Feld color, welches rot oder schwarz sein kann, enthält. Die Nullzeiger werden als Zeiger auf Blätter angesehen, die keine weitere Information (außer der Farbe) enthalten. Mit anderen Worten, alle echten Knoten im Baum sind keine Blätter. Die folgenden Eigenschaften sollen erfüllt sein. 1. Jeder Knoten ist entweder rot oder schwarz. 2. Die Blätter sind schwarz. 3. Ist ein Knoten rot, dann sind seine beiden Kinder schwarz. 4. Jeder Pfad von einem (festen) Knoten zu einem Blatt hat die gleiche Anzahl von schwarzen Knoten. Man definiert die schwarze Tiefe st des Baumes als die Zahl der schwarzen Knoten auf einem Pfad von der Wurzel zu einem Blatt, wobei die Wurzel selbst nicht eingerechnet wird. a) Zeigen Sie durch Induktion nach der Tiefe des Baumes: Für einen Rot-Schwarz-Baum mit n Knoten gilt n ≥ 2st − 1. b) Es sei t die Tiefe des Rot-Schwarz-Baums. Zeigen Sie: st ≥ 2t . c) Zeigen Sie: Ein Rot-Schwarz Baum mit n Knoten hat eine Tiefe in der Größenordnung O(log n). Aufgabe 5 (10 + 10 + 10 Punkte) Gegeben sei eine Implementierung von b_queue wie in Aufgabe 3 auf dem 5. Übungsblatt. Zusätzlich zu den Operationen enqueue und dequeue gibt es noch eine weitere Operation mdequeue, mit der mehrere Elemente gleichzeitig aus der Warteschlange entfernt werden können: mdequeue(int k) führt solange hintereinander dequeue aus, bis die Warteschlange leer ist, oder bis k Elemente aus der Warteschlange entfernt wurden. Wir betrachten jetzt eine leere b_queue der Kapazität n, auf der eine Folge von n enqueue-, dequeue- und mdequeue-Operationen durchgeführt werden. Unter der Annahme, daß eine enqueueund eine dequeue-Operation jeweils konstante Zeit benötigen, wollen wir verschiedene Laufzeitanalysen für diese n Operationen durchführen. a) Überlegen Sie sich (ähnlich wie auf dem 5. Übungsblatt), daß die Laufzeit amortisiert konstant ist. b) Zeigen Sie mit der Bankkontomethode, daß die Laufzeit amortisiert konstant ist. c) Zeigen Sie mit der Potentialmethode, daß die Laufzeit amortisiert konstant ist.