Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung 9 09.12.99 -Binärer Suchbaum III- -AVL-Baum-

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Punkt-in-Polygon-Verfahren III (R/R+-Baum)
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Suchbäume unterstützen alle unten angegebenen Operationen für dynamische Mengen K effizient: Search(K ,k) ---- Suche ein Element x von K mit Schlüssel.
Mindesthöhe: |_log2 n_|, maximale Höhe: n-1
Claudio Moraga; Gisbert Dittrich
7. Natürliche Binärbäume
Gewichtsbalancierte Suchbäume
Durchlaufen eines Binärbaumes
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Balancierte Bäume Effizienz der Wörterbuchoperationen auf Bäumen hängt direkt von der Baumhöhe ab. Baum mit n Knoten: Mindesthöhe: |_log2 n_|, maximale.
Sortieren mit Binären Bäumen
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - Balancierte Bäume, AVL-Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 9 Claudio Moraga; Gisbert Dittrich FBI Unido
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 12 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
IKG - Übung Diskrete Mathe I – Jörg Schmittwilken
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Bäume-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung In welcher Masche liegt der Punkt p?
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Planung einfache Dateibehandlung (externe Dateien, Öffnen, Lesen/Schreiben, Schließen). Diskussion des Problems, die Wörter in einem gegebenen Text.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Kapitel 2: Datenstrukturen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Animationen zu Kap. 4.3: AVL-Bäume
Rekursion mit Listen: Quicksort
Geoinformation I Vorlesung 8 WS 2000/2001 Graphen.
Geoinformation II Vorlesung 2 SS 2001 AVL-Bäume.
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 7 SS 2000 Punkt-in-Polygon-Verfahren I (Trapezkarte)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Vorlesung Binärer Suchbaum II-
Graphen und Bäume.
Kapitel 6: Suchbäume und weitere Sortierverfahren
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 6 SS 2001 Segmentschnitt III.
Diskrete Mathematik II
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Foliendesign: Jörg Steinrücken & Tobias Kahn Vorlesung
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung April 2000 AVL-Bäume.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II Vorlesung 4 WS 01/02 Quadtrees.
Binärer Suchbaum IV AVL-Baum I
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung der Algorithmus von Floyd.
Binärer Baum, Binärer Suchbaum I
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Diskrete Mathematik I Vorlesung 7 Binärer Suchbaum III.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Binärbäume.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 1 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
AVL-Bäume.
Vorlesung AVL-Bäume/Algorithmen-
Vorlesung AVL-Bäume/Algorithmen-
Heapsort-Algorithmus
 Präsentation transkript:

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-

2 Übersicht Binärer Suchbaum –Durchlaufstrategien Breitendurchlauf –SohnElem –SohnListe, FügeAn (hinten) –Entferne vorne –Beispiele für den Aufbau binärer Suchbäume

3 Übersicht (Fortsetzung) AVL-Baum –Definition –Balancefaktor –Einfügen von Knoten R-Rotation L-Rotation –Löschen von Knoten L-Rotation –Allgemein L-Rotation LR-Rotation

4 Binärer Suchbaum Ein binärer Baum B ist ein binärer Suchbaum, falls er leer ist oder die folgenden Eigenschaften erfüllt sind: –die beiden Unterbäume sind binäre Suchbäume –die Beschriftungen der Knoten des linken Suchbaums sind kleiner als die Beschriftung der Wurzel –die Beschriftungen des rechten Suchbaums sind größer als die Beschriftung der Wurzel n <n<n>n>n

5 Durchlaufstrategien Preorder –Die Wurzel wird vor den Unterbäumen besucht, die Unterbäume werden von links nach rechts abgearbeitet Breitendurchlauf –Mit einem Knoten werden seine Nachbarn von links nach rechts besucht

6 Durchlaufstrategie: Breitendurchlauf Warteschlange

7 Durchlaufstrategie: Breitendurchlauf Ws

8 Durchlaufstrategie: Breitendurchlauf Ws 16

9 Durchlaufstrategie: Breitendurchlauf Ws

10 Durchlaufstrategie: Breitendurchlauf Ws

11 Durchlaufstrategie: Breitendurchlauf Ws 14

12 Durchlaufstrategie: Breitendurchlauf Ws 18

13 Durchlaufstrategie: Breitendurchlauf Ws

14 Durchlaufstrategie: Breitendurchlauf Ws

15 Durchlaufstrategie: Breitendurchlauf Ws 15

16 Durchlaufstrategie: Breitendurchlauf Ws

17 Durchlaufstrategie: Breitendurchlauf Ws

18 Durchlaufstrategie: Breitendurchlauf Ws

19 Durchlaufstrategie: Breitendurchlauf Ws

20 class BST {... void Breitendurchlauf() { SohnListe ws = new SohnListe(); Knoten aktuell; ws.FügeAn(wurzel); while ((aktuell = ws.Entferne()) != null) { System.out.println(aktuell.GibWert()); ws.FügeAn(aktuell.GibLinks()); ws.FügeAn(aktuell.GibRechts()); }... } entferne Test auf Ende Durchlaufstrategie: Breitendurchlauf

21 Breitendurchlauf: SohnElem class SohnElem { private Knoten wert; private SohnElem weiter; SohnElem(Knoten k) { wert = k; weiter = null; } void SetzeWert(Knoten k) { wert = k; } Knoten GibWert() { return wert; } void SetzeWeiter(SohnElem s) { weiter = s; } SohnElem GibWeiter() { return weiter; } } knoten (statt int )

22 Breitendurchlauf: SohnListe, FügeAn (hinten) class SohnListe { private SohnElem kopf, fuß; void FügeAn(Knoten an) { SohnElem neu = new SohnElem(an); if (fuß != null) { fuß.SetzeWeiter(neu); fuß = neu; } else kopf = fuß = neu; }

23 Breitendurchlauf: Entferne vorne Knoten Entferne() { Knoten erster = null; if (kopf != null) { erster = kopf.GibWert(); kopf = kopf.GibWeiter(); if (kopf == null) fuss = null; } return erster;

24 Eingabefolge Eingabefolge Eingabefolge oder Eingabefolge Beispiele für den Aufbau binärer Suchbäume

25 AVL-Baum (Definition) Ein binärer Baum heißt ausgeglichener Baum oder AVL-Baum (nach Adelson-Velskij und Landis), falls sich für jeden Knoten k die Höhen h der beiden Teilbäume um höchstens 1 unterscheiden.

26 AVL-Baum: Beispiel

27 Balancefaktor Balancefaktor bal(k) bal(k) = h(rechter Teilbaum von k) - h(linker Teilbaum von k) Für AVL-Bäume gilt: bal(k)

28 AVL-Baum: Beispiel

29 AVL-Baum: Beispiel

AVL-Baum: Beispiel

31 Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Ausgeglichenheit ist verletzt Einfügen von Knoten Einfügen von k = 30

Ausbalancieren durch Rotation Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten R- Rotation Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

L- Rotation Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k = 30

Einfügen von Knoten Einfügen von k =

Einfügen von Knoten Einfügen von k =

Einfügen von Knoten

50 Löschen von Knoten Löschen von k = 8

51 Löschen von Knoten Löschen von k = 8

52 Löschen von Knoten Löschen von k = 8

53 Löschen von Knoten Löschen von k = 8

54 Löschen von Knoten Löschen von k = 8

55 Löschen von Knoten Löschen von k = 8

56 Löschen von Knoten Löschen von k = 11

57 Löschen von Knoten Löschen von k = 11

58 Löschen von Knoten Löschen von k = 11

59 Löschen von Knoten Löschen von k = 11

60 Löschen von Knoten Löschen von k = 11 L- Rotation

61 Löschen von Knoten Löschen von k = 11

62 Löschen von Knoten Löschen von k = 11

Löschen von Knoten

Löschen von Knoten

65 L-Rotation Knoten x wird eingefügt und verletzt dadurch die Ausgeglichenheit an einem höher gelegenen Knoten k 1 Notwendige Korrektur durch L-Rotation (symmetrisch: R-Rotation): Umhängen von zwei Kanten

66 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 0 +1

67 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

68 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

69 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2

70 L-Rotation T1T1 k1k1 k2k2 x 0 T2T2 T3T3 0

71 LR-Rotation x wird eingefügt und verletzt dadurch die Ausgeglichen- heit an einem höher gelegenen Knoten k 1. Notwendige Korrektur durch LR- Rotation (symmetrisch: RL-, RR- und LL- Rotation): Umhängen von vier Kanten

72 LR-Rotation T1T1 k2k2 k1k1 0 T3T3 T4T4 k3k3 T2T2 0

73 LR-Rotation T1T1 k2k2 k1k1 x T3T3 T4T4 k3k3 T2T2 +1

74 LR-Rotation k1k1 -2 T4T4 T1T1 k2k2 x +1 T3T3 k3k3 T2T2

75 LR-Rotation k1k1 -2 T1T1 k2k2 x +1 T3T3 T4T4 k3k3 T2T2

76 LR-Rotation T1T1 k2k2 k1k1 x T3T3 T4T4 k3k3 T2T2 +1

77 LR-Rotation k1k1 -2 T4T4 T1T1 k2k2 x T3T3 k3k3 T2T2

78 LR-Rotation k1k1 -2 T1T1 k2k2 x T3T3 T4T4 k3k3 T2T2

79 LR-Rotation T1T1 k2k2 k1k1 x -2 T3T3 T4T4 k3k3 T2T2

LR-Rotation T1T1 k2k2 k1k1 x 0 0 T3T3 T4T4 k3k3 T2T2