Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
1
Binärer Suchbaum IV AVL-Baum I
Diskrete Mathematik I Vorlesung 8 Binärer Suchbaum IV AVL-Baum I
2
Durchlaufstrategien Preorder
1 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
3
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 Warteschlange 16 A 26x
4
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 Ws 16 A 26x
5
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 Ws 10 24 A 26x
6
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 10 24 Ws A 26x
7
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 Ws 24 9 14 A 26x
8
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 24 9 Ws 14 A 26x
9
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 9 14 Ws 18 A 26x
10
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 9 9 14 Ws 18 A 26x
11
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 9 14 14 18 Ws A 26x
12
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 9 14 Ws 18 13 15 A 26x
13
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 9 14 18 18 13 Ws 15 A 26x
14
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 9 14 18 13 13 15 Ws A 26x
15
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 9 14 18 13 15 15 Ws A 26x
16
Durchlaufstrategie: Breitendurchlauf
2 Durchlaufstrategie: Breitendurchlauf 18 14 9 10 24 16 13 15 16 10 24 9 14 18 13 15 Ws A 26x
17
Durchlaufstrategie: Breitendurchlauf
3 Durchlaufstrategie: Breitendurchlauf 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()); } Test auf Ende entferne A 2x
18
Breitendurchlauf: SohnElem
4 Breitendurchlauf: SohnElem knoten (statt int) 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; } }
19
Breitendurchlauf: SohnListe, FügeAn (hinten)
5 Breitendurchlauf: SohnListe, FügeAn (hinten) class SohnListe { private SohnElem kopf, fuß; Sohn Liste() {kopf = fuß = null;} void FügeAn(Knoten an) { SohnElem neu = new SohnElem(an); if (fuß != null) { fuß.SetzeWeiter(neu); fuß = neu; } else kopf = fuß = neu;
20
Breitendurchlauf: Entferne vorne
6 Breitendurchlauf: Entferne vorne . Knoten Entferne() { Knoten erster = null; if (kopf != null) { erster = kopf.GibWert(); kopf = kopf.GibWeiter(); if (kopf == null) fuss = null; } return erster;
21
Vergleich „Binäre Suchbäume“ - „Liste“
7 Vergleich „Binäre Suchbäume“ - „Liste“ in einem binären Suchbaum findet man schneller ein vorhandenes Objekt in einem binären Suchbaum stellt man schneller fest, daß ein Objekt nicht vorhanden ist warum? der Weg vom Kopf zur Wurzel ist im allgemeinen kürzer als der Weg vom Anfang zum Ende eine Liste (kann man das genauer, d. h. quantitativ angeben? später) es gibt aber auch ungünstige Fälle, wo der Baum aussieht wie eine Liste diese Fälle treten stets bei der iterativen Eingabe sortierter Elemente auf
22
Beispiele für den Aufbau binärer Suchbäume
8 Beispiele für den Aufbau binärer Suchbäume Eingabefolge 1-2-3 Eingabefolge 3-2-1 1 2 3 1 2 3 Eingabefolge oder 2-1-3 Eingabefolge 3-1-2 1 2 3 2 1 3 A 7x
23
AVL-Baum (Definition)
9 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.
24
10 AVL-Baum: Beispiel
25
Balancefaktor Balancefaktor bal(k)
11 Balancefaktor Balancefaktor bal(k) bal(k) = h(rechter Teilbaum von k) - h(linker Teilbaum von k) Für AVL-Bäume gilt: bal(k)
26
12 AVL-Baum: Beispiel +1 -1 +1 +1 A 2x
27
12 AVL-Baum: Beispiel +1 -1 +1 +1 A 2x
28
12 AVL-Baum: Beispiel +2 +1 +1 A 2x
29
Einfügen von Knoten +1 14 +1 8 20 3 11 17 33 26 39 Einfügen von k = 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +1 8 20 3 11 17 33 26 39 A 36x
30
Einfügen von Knoten +1 14 +1 8 20 3 11 17 33 26 39 Einfügen von k = 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +1 8 20 3 11 17 33 26 39 A 36x
31
Einfügen von Knoten +1 14 +1 8 20 3 11 17 33 26 39 Einfügen von k = 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +1 8 20 3 11 17 33 26 39 A 36x
32
Einfügen von Knoten +1 14 +1 8 20 3 11 17 33 26 39 Einfügen von k = 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +1 8 20 3 11 17 33 26 39 A 36x
33
Einfügen von Knoten +1 14 +1 8 20 3 11 17 33 26 39 Einfügen von k = 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +1 8 20 3 11 17 33 26 39 A 36x
34
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +1 8 20 3 11 17 33 26 39 30 A 36x
35
Einfügen von Knoten +1 14 +1 8 20 3 11 17 33 +1 26 39 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +1 8 20 3 11 17 33 +1 26 39 30 A 36x
36
Einfügen von Knoten +1 14 +1 8 20 -1 3 11 17 33 +1 26 39 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +1 8 20 -1 3 11 17 33 +1 26 39 30 A 36x
37
Einfügen von Knoten +1 14 +2 8 20 -1 3 11 17 33 +1 26 39 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +2 8 20 -1 3 11 17 33 +1 Ausgeglichenheit ist verletzt 26 39 30 A 36x
38
Einfügen von Knoten +1 14 +2 8 20 -1 3 11 17 33 +1 26 39 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +2 8 20 -1 3 11 17 33 +1 26 39 Ausbalancieren durch Rotation 30 A 36x
39
Einfügen von Knoten +1 14 +2 8 20 -1 3 11 17 33 +1 26 39 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +2 8 20 -1 3 11 17 33 +1 26 39 R- Rotation 30 A 36x
40
Einfügen von Knoten +1 14 +2 8 20 -1 3 11 17 33 +1 26 39 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +2 8 20 -1 3 11 17 33 +1 26 39 30 A 36x
41
Einfügen von Knoten +1 14 +2 8 20 -1 3 11 17 33 +1 26 39 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +2 8 20 -1 3 11 17 33 +1 26 39 30 A 36x
42
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +2 8 20 3 11 17 26 33 L- Rotation 30 39 A 36x
43
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +2 8 20 3 11 17 26 33 30 39 A 36x
44
13 Einfügen von Knoten +1 14 Einfügen von k = 30 +2 8 20 3 11 17 26 33 30 39 A 36x
45
Einfügen von Knoten +1 14 8 26 3 11 20 33 17 30 39 Einfügen von k = 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 8 26 3 11 20 33 17 30 39 A 36x
46
Einfügen von Knoten +1 14 8 26 3 11 20 33 17 30 39 Einfügen von k = 30
13 Einfügen von Knoten +1 14 Einfügen von k = 30 8 26 3 11 20 33 17 30 39 A 36x
47
13 Einfügen von Knoten +1 14 8 26 3 11 20 33 17 30 39 A 36x
48
Löschen von Knoten +1 14 +1 8 20 3 11 17 33 26 39 Löschen von k = 8 A
+1 8 20 3 11 17 33 26 39 A 9x
49
Löschen von Knoten +1 14 +1 8 20 3 11 17 33 26 39 Löschen von k = 8 A
+1 8 20 3 11 17 33 26 39 A 9x
50
Löschen von Knoten +1 14 +1 8 20 3 11 17 33 26 39 Löschen von k = 8 A
+1 8 20 3 11 17 33 26 39 A 9x
51
Löschen von Knoten +1 14 -1 +1 11 20 3 17 33 26 39 Löschen von k = 8 A
3 17 33 26 39 A 9x
52
Löschen von Knoten +1 14 -1 +1 11 20 3 17 33 26 39 Löschen von k = 8 A
3 17 33 26 39 A 9x
53
Löschen von Knoten +1 14 -1 +1 11 20 3 17 33 26 39 Löschen von k = 8 A
3 17 33 26 39 A 9x
54
Löschen von Knoten +1 14 -1 +1 11 20 3 17 33 26 39 Löschen von k = 11
15 Löschen von Knoten +1 Löschen von k = 11 14 -1 +1 11 20 3 17 33 26 39 A 15x
55
Löschen von Knoten +1 14 -1 +1 11 20 3 17 33 26 39 Löschen von k = 11
15 Löschen von Knoten +1 Löschen von k = 11 14 -1 +1 11 20 3 17 33 26 39 A 15x
56
Löschen von Knoten +1 14 -1 +1 11 20 3 17 33 26 39 Löschen von k = 11
15 Löschen von Knoten +1 Löschen von k = 11 14 -1 +1 11 20 3 17 33 26 39 A 15x
57
Löschen von Knoten +1 14 +1 3 20 17 33 26 39 Löschen von k = 11 A 15x
+1 3 20 17 33 26 39 A 15x
58
Löschen von Knoten +2 14 +1 3 20 17 33 26 39 Löschen von k = 11
15 Löschen von Knoten +2 Löschen von k = 11 14 +1 3 20 17 33 L- Rotation 26 39 A 15x
59
Löschen von Knoten +2 14 +1 3 20 17 33 26 39 Löschen von k = 11 A 15x
+1 3 20 17 33 26 39 A 15x
60
Löschen von Knoten +2 14 +1 3 20 17 33 26 39 Löschen von k = 11 A 15x
+1 3 20 17 33 26 39 A 15x
61
15 Löschen von Knoten Löschen von k = 11 20 14 33 3 17 26 39 A 15x
62
15 Löschen von Knoten 20 14 33 3 17 26 39 A 15x
63
16 L-Rotation Knoten x wird eingefügt und verletzt dadurch die Ausgeglichenheit an einem höher gelegenen Knoten k1 Notwendige Korrektur durch L-Rotation (symmetrisch: R-Rotation): Umhängen von zwei Kanten
64
17 L-Rotation +1 k1 k2 T1 T2 T3 A 7x
65
17 L-Rotation +2 k1 +1 k2 T1 T2 T3 x A 7x
66
17 L-Rotation +2 k1 +1 k2 T1 T2 T3 x A 7x
67
17 L-Rotation +2 k1 +1 k2 T1 T2 T3 x A 7x
68
17 L-Rotation k2 k1 T3 T1 T2 x A 7x
69
18 LR-Rotation x wird eingefügt und verletzt dadurch die Ausgeglichenheit an einem höher gelegenen Knoten k1. Notwendige Korrektur durch LR- Rotation (symmetrisch: RL-, RR- und LL- Rotation): Umhängen von vier Kanten
70
19 LR-Rotation -1 k1 k2 T4 k3 T1 T2 T3 A 14x
71
19 LR-Rotation -2 k1 +1 k2 +1 T4 k3 T1 T2 T3 x A 14x
72
19 LR-Rotation -2 k1 T1 k2 x +1 T3 k3 T2 T4 A 14x
73
19 LR-Rotation -2 k1 T1 k2 x +1 T3 T4 k3 T2 A 14x
74
19 LR-Rotation -2 k1 +1 k2 +1 T4 k3 T1 T2 T3 x A 14x
75
19 LR-Rotation -2 k1 T1 k2 x -1 T3 k3 T2 T4 A 14x
76
19 LR-Rotation -2 k1 T1 k2 x -1 T3 T4 k3 T2 A 14x
77
19 LR-Rotation -2 k1 -1 k3 -1 k2 T4 T3 T1 T2 x A 14x
78
19 LR-Rotation k3 -1 k1 k2 T2 T3 T1 T4 x A 14x
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.