Informatik II, SS 2014

Ähnliche Dokumente
Informatik II, SS 2018

13. Binäre Suchbäume

Informatik II, SS 2014

Algorithmen und Datenstrukturen

Anwendungsbeispiel MinHeap

Algorithmen und Datenstrukturen Suchbaum

Informatik II Vorlesung am D-BAUG der ETH Zürich

9. Natürliche Suchbäume

Informatik II, SS 2014

Algorithmen und Datenstrukturen I Bruder-Bäume

Abgabe: (vor der Vorlesung) Aufgabe 7.1 (P) Binomial Heap

Geordnete Binärbäume

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

elementare Datenstrukturen

Übung Algorithmen und Datenstrukturen

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Datenstrukturen & Algorithmen Lösungen zu Blatt 4 FS 15

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

Vorlesung Datenstrukturen

Natürliche Bäume. (Algorithmen und Datenstrukturen I) Prof. Dr. Oliver Braun. Letzte Änderung: :16. Natürliche Bäume 1/16

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Motivation Binäre Suchbäume

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Übung Algorithmen und Datenstrukturen

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Suchen und Sortieren

14. Rot-Schwarz-Bäume

Informatik II Prüfungsvorbereitungskurs

Algorithmen und Datenstrukturen Balancierte Suchbäume

11. Elementare Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Tutoraufgabe 1 (Implementierung eines ADTs):

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Suchen. Lineare Suche. Such-Algorithmen. Sommersemester Dr.

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Algorithmen und Datenstrukturen Kapitel 7 Dynamische Mengen, das Suchproblem &

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Algorithmen & Datenstrukturen 2 Praktikum 1

3. Binäre Suchbäume. 3.1 Natürliche binäre Suchbäume. EADS 3.1 Natürliche binäre Suchbäume 78/598 ľernst W. Mayr

Datenstrukturen und Algorithmen

Sortierte Folgen 250

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik

Transkript:

Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 10 (3.6.2014) Binäre Suchbäume I Algorithmen und Komplexität

Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen: D.minimum() : gibt kleinsten key in der Datenstruktur zurück D.maximum() : gibt grössten key in der Datenstruktur zurück D.successor(key) : gibt nächstgrösseren key zurück D.predecessor(key) : gibt nächstkleineren key zurück D.getRange(k1, k2) : gibt alle Einträge mit Schlüsseln im Intervall [k1,k2] zurück Lassen sich mit Hashtabellen nicht effizient implementieren! 2

Binäre Suche Revisited Binäre Suche nach in einem sortierten Array 2 3 4 6 9 12 15 16 17 18 19 20 24 27 29 16 6 20 3 12 18 27 2 4 9 15 17 19 24 29 3

Binäre Suchbäume Benutze den Suchbaum der binären Suche als Datenstruktur root 16 6 20 3 12 18 27 2 4 9 15 17 19 24 29 4

Binärer Suchbaum : Elemente TreeElement: parent key, data left right Implementierung: gleich wie bei den Listen Elementen 5

Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein Quelle: [CLRS] 6

Suche in einem binären Suchbaum Suche nach Schlüssel Benutze binäre Suche (darum heisst s binärer Suchbaum ) current = root while current!= null and current.key!= x do if current.key > x then current = current.left else current = current.right 7

Suche in einem binären Suchbaum Laufzeit der Suche in einem binären Suchbaum 8

Suche Minimum / Maximum Finde kleinstes Element in einem bin. Suchbaum 9

Suche Vorgänger / Nachfolger Finde Vorgänger / Nachfolger eines Knoten 10

Suche Vorgänger / Nachfolger Finde Vorgänger / Nachfolger eines Knoten 11

Einfügen eines Schlüssels Füge Schlüssel 1, 5, 14, 6.5, 19 ein 12

Einfügen eines Schlüssels Füge Schlüssel ein 13

Löschen eines Schlüssels I Lösche Schlüssel, einfache Fälle: Schlüssel ist in einem Blatt des Baums Blatt = Knoten hat keine Kinder Knoten mit Schlüssel hat nur 1 Kind 14

Löschen eines Schlüssels II Lösche Schlüssel, Knoten hat zwei Kinder: Lösche Schlüssel 6: 15

Löschen eines Schlüssels III Lösche Schlüssel, Knoten hat zwei Kinder: Vorgänger ist grösster Knoten im linken Teilbaum Vorgänger hat kein rechtes Kind Nachfolger ist kleinster Knoten im rechten Teilbaum Nachfolger hat kein linkes Kind Schreibe Schlüssel und Daten des Vorgängers (oder alternativ Nachfolgers) in den Knoten von Lösche Vorgänger/Nachfolger Knoten Vorgänger/Nachfolger ist entweder ein Blatt oder hat nur ein Kind 16

Löschen eines Schlüssels IV Lösche Schlüssel : 1. Finde Knoten mit.key wie üblich mit binärer Suche 2. Falls nicht 2 Kinder hat, lösche Knoten Annahme: ist Parent von, ist linkes Kind von (anderer Fall analog) Fall ein Blatt ist, wird.parent.left null Falls ein Kind hat, wird.parent.left 3. Falls zwei Kinder hat, dann bestimme Vorgängerknoten Funktioniert auch mit Nachfolgerknoten 4. Setze.key.key und.data.data 5. Lösche Knoten (gleich, wie oben gelöscht wird) Knoten hat höchstens 1 Kind! 17

Laufzeit Binärer Suchbaum Die Operationen find, min, max, predecessor, successor, insert, delete haben alle Laufzeit. Was ist die Tiefe eines binären Suchbaums? 18

Praktische Übungsaufgabe Programmieren einer Binary Search Tree Klasse Sprache: C++, Java, Python Operationen: find, insert, delete, minimum, maximum Zusätzlich: toarray (gibt sortiertes Array zurück) avgdepth (gibt durchschnittliche Blatttiefe zurück) Vorgabe: Struktur der Klasse Signatur aller public Methoden Wir werden jetzt gleich mal die C++ Vorgabe anschauen und eine erste Methode programmieren... 19