Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Erwin Holst Geändert vor über 9 Jahren
1
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-
2
2 Übersicht Binärer Suchbaum –Durchlaufstrategien Breitendurchlauf –SohnElem –SohnListe, FügeAn (hinten) –Entferne vorne –Beispiele für den Aufbau binärer Suchbäume
3
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
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
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
6 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 Warteschlange
7
7 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 Ws
8
8 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 1024 Ws 16
9
9 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 10 24 Ws
10
10 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 10 14249 Ws
11
11 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 10 249 Ws 14
12
12 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 10 914 Ws 18
13
13 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 10 18914 Ws
14
14 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 10 1418 Ws
15
15 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 10 1813 Ws 15
16
16 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 18 10 151813 Ws
17
17 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 10 1315 Ws
18
18 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 15 10 15 Ws
19
19 Durchlaufstrategie: Breitendurchlauf 18149 1024 16 1315 16 24 9 14 13 18 15 10 Ws
20
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
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
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
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
24 Eingabefolge 1-2-3 1 2 3 Eingabefolge 3-2-1 Eingabefolge 2-3-1 oder 2-1-3 2 13 Eingabefolge 3-1-2 Beispiele für den Aufbau binärer Suchbäume 1 2 3 1 23
25
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
26 AVL-Baum: Beispiel
27
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
28 AVL-Baum: Beispiel 00 0 +1 +1
29
29 AVL-Baum: Beispiel 00 0 +1 +1
30
30 0 0 +1 0 +2 AVL-Baum: Beispiel
31
31 Einfügen von Knoten 2639 17113 208 33 14 00 0000 0+1 Einfügen von k = 30
32
32 14 113 8 00 0 2639 17 20 33 00 00 +1 Einfügen von Knoten Einfügen von k = 30
33
33 14 113 8 00 0 2639 17 20 33 00 00 +1 Einfügen von Knoten Einfügen von k = 30
34
34 17 20 14 0 2639 33 00 0 113 8 00 0 +1 Einfügen von Knoten Einfügen von k = 30
35
35 17 20 14 0 2639 33 00 0 113 8 00 0 +1 Einfügen von Knoten Einfügen von k = 30
36
36 14 30 2639 33 00 0 113 8 00 0 17 20 0 +1 0 Einfügen von Knoten Einfügen von k = 30
37
37 14 +1 113 8 00 0 17 20 0 +1 30 2639 33 0 0 0 Einfügen von Knoten Einfügen von k = 30
38
38 17 20 14 0 113 8 00 0 +1 2639 33 30 0+1 0 Einfügen von Knoten Einfügen von k = 30
39
39 17 20 14 0 113 8 00 0 +2 +1 2639 33 30 0+1 0 Ausgeglichenheit ist verletzt Einfügen von Knoten Einfügen von k = 30
40
40 17 20 14 0 113 8 00 0+2 +1 2639 33 30 0+1 0 Ausbalancieren durch Rotation Einfügen von Knoten Einfügen von k = 30
41
41 2639 17113 208 33 14 30 0+1 000 0+2 +1 0 Einfügen von Knoten R- Rotation Einfügen von k = 30
42
42 17 20 14 0 113 8 00 0 +2 +1 2639 33 30 0+1 0 Einfügen von Knoten Einfügen von k = 30
43
43 2639 17113 208 33 14 30 0+1 000 0+2 +1 0 Einfügen von Knoten Einfügen von k = 30
44
44 17 20 14 0 113 8 00 0 +2 +1 26 3039 33 L- Rotation Einfügen von Knoten Einfügen von k = 30
45
45 17 20 26 14 0 113 8 00 0+2 +1 3039 33 Einfügen von Knoten Einfügen von k = 30
46
46 17113 208 26 14 000 0+2 +1 3039 33 Einfügen von Knoten Einfügen von k = 30
47
47 26 14 113 8 00 00 +1 Einfügen von Knoten Einfügen von k = 30 39 2033 00 00 0 1730
48
48 113 268 14 0 00 00 +1 17 Einfügen von Knoten Einfügen von k = 30 39 2033 0 00 0 30
49
49 39 20113 268 33 14 00 0000 00 +1 0 1730 Einfügen von Knoten
50
50 Löschen von Knoten 2639 17113 208 33 14 00 0000 0+1 Löschen von k = 8
51
51 Löschen von Knoten 2639 17113 208 33 14 00 0000 0+1 Löschen von k = 8
52
52 Löschen von Knoten 113 8 14 00 0 2639 17 20 33 00 00 +1 Löschen von k = 8
53
53 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 8
54
54 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 8
55
55 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 8
56
56 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 11
57
57 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 11
58
58 Löschen von Knoten 3 14 0 11 2639 17 20 33 00 00 +1 Löschen von k = 11
59
59 Löschen von Knoten 14 3 0 2639 17 20 33 00 00 +1 Löschen von k = 11
60
60 Löschen von Knoten 14 3 0 2639 17 20 33 00 00 +1 +2 Löschen von k = 11 L- Rotation
61
61 Löschen von Knoten 14 3 0 2639 17 20 33 00 00 +1 +2 Löschen von k = 11
62
62 Löschen von Knoten 14 3 0 2639 17 20 33 00 00 +1 +2 Löschen von k = 11
63
63 20 173 14 00 0 26 33 39 00 0 0 Löschen von Knoten
64
64 26173 3314 39 20 0000 00 0 Löschen von Knoten
65
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
66 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 0 +1
67
67 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2
68
68 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2
69
69 L-Rotation T1T1 T2T2 T3T3 k1k1 k2k2 x +1 +2
70
70 L-Rotation T1T1 k1k1 k2k2 x 0 T2T2 T3T3 0
71
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
72 LR-Rotation T1T1 k2k2 k1k1 0 T3T3 T4T4 k3k3 T2T2 0
73
73 LR-Rotation T1T1 k2k2 k1k1 x +1 -2 T3T3 T4T4 k3k3 T2T2 +1
74
74 LR-Rotation k1k1 -2 T4T4 T1T1 k2k2 x +1 T3T3 k3k3 T2T2
75
75 LR-Rotation k1k1 -2 T1T1 k2k2 x +1 T3T3 T4T4 k3k3 T2T2
76
76 LR-Rotation T1T1 k2k2 k1k1 x +1 -2 T3T3 T4T4 k3k3 T2T2 +1
77
77 LR-Rotation k1k1 -2 T4T4 T1T1 k2k2 x T3T3 k3k3 T2T2
78
78 LR-Rotation k1k1 -2 T1T1 k2k2 x T3T3 T4T4 k3k3 T2T2
79
79 LR-Rotation T1T1 k2k2 k1k1 x -2 T3T3 T4T4 k3k3 T2T2
80
LR-Rotation T1T1 k2k2 k1k1 x 0 0 T3T3 T4T4 k3k3 T2T2
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.