Übung Algorithmen und Datenstrukturen Sommersemester 2015 Marc Bux, Humboldt-Universität zu Berlin Organisatorisches • Probeklausur • Übungsreihenfolge vertauschen? • Klausurvorbereitung – Wunschthemen 2 Agenda • Hashing • Binäre Suchbäume • AVL-Bäume 3 Aufgabe zu Hashing 4 Agenda • Hashing • Binäre Suchbäume • AVL-Bäume 5 Binäre Suchbäume • Knoten beinhaltet „Schlüssel“ hat Verweis auf linkes und rechtes Kind • Sortierung/Sucheigenschaft Schlüssel des linken Teilbaums eines Knotens sind kleiner als Schlüssel des Knotens selbst Schlüssel des rechten Teilbaums eines Knotens sind größer als Schlüssel des Knotens selbst Gleiche Schlüssel entweder links oder rechts 10 6 1 15 8 13 19 14 6 Aufgabe zu Binären Suchbäumen 7 Agenda • Hashing • Binäre Suchbäume • AVL-Bäume 8 AVL-Bäume • Benannt nach Erfindern Adelson-Velsky und Landis (AVL) • Älteste Datenstruktur für balancierte Bäume • Binärer Suchbaum mit zusätzlicher Eigenschaft In jedem Knoten unterscheidet sich die Höhe der beiden Teilbäume um höchstens eins Höhe logarithmisch in Anzahl der Schlüssel • Rebalancierung (Rotation) beim Einfügen und Löschen • Definition: Sei u Knoten in binärem Baum. bal(u) = Differenz zwischen Höhe des rechten Teilbaums von u und Höhe des linkes Teilbaums von u Ein binärer Baum heißt AVL-Baum, falls für alle Knoten u gilt: |bal(u)| ≤ 1 10 1 6 0 15 –1 1 0 8 0 13 1 19 0 14 0 9 Rebalancierung von AVL-Bäumen • 4 Rotationsoperationen auf AVL-Bäumen: Sei u Knoten, v Kind von u im Teilbaum mit größerer Höhe bal(u) = 2, bal(v) = 1: Einfachrotation Links(u) bal(u) = 2, bal(v) = -1: Doppelrotation Rechts(v) + Links(u) bal(u) = -2, bal(v) = 1: Doppelrotation Links(v) + Rechts(u) bal(u) = -2, bal(v) = -1: Einfachrotation Rechts(u) • Laufzeit: Rotationen sind lokale Operationen, die nur Umsetzen einiger Zeiger erfordern, und in Zeit 𝒪(1) erfolgen Aufgabe: Sei T ein leerer AVL-Baum. Fügen Sie nacheinander die Elemente 30, 20, 22, 55, 66, 44, 33 ein 10 Aufgabe zu AVL-Bäumen Sei T folgender AVL-Baum: 30 1 22 -1 20 0 55 -1 44 -1 66 0 33 0 Fügen Sie nacheinander die Schlüssel 39, 42 in T ein und zeichnen Sie den jeweiligen AVL-Baum nach jeder insert-Operation. 11 Einfügen von 39 bal(u) = -2, bal(v) = 1: Doppelrotation Links(v) + Rechts(u) 30 1 22 -1 20 0 30 55 -1 22 44 -1 66 0 55 20 44 33 0 66 39 33 30 2 22 -1 20 0 30 1 55 -2 44 -2 66 0 33 1 39 0 22 -1 20 0 55 -1 39 0 33 0 66 0 44 0 12 Einfügen von 42 bal(u) = -2, bal(v) = 1: Doppelrotation Links(v) + Rechts(u) 30 1 22 -1 20 0 30 55 -1 39 0 33 0 22 66 0 55 20 0 66 0 44 44 0 39 33 42 30 2 22 -1 20 0 30 1 55 -2 39 1 33 0 66 0 44 -1 42 0 22 -1 20 0 44 0 39 0 33 0 55 1 42 0 66 0 13 Agenda • Hashing • Binäre Suchbäume • AVL-Bäume 14 Ausblick: Nächste zwei Wochen • • • • • • • Rückgabe der Abgaben zum vierten Übungsblatt Besprechung der Bewertung zum vierten Übungsblatt Besprechung der Lösungen des fünften Übungsblatts Vorstellen der Aufgaben des sechsten Übungsblatts Optimale Suchbäume Graphalgorithmen Fragen?