Vorlesungsmitschrieb

Werbung
Niveau 0
Bäume (Nachtrag)
Niveau 1
Definitionen
­ Elternelement: Vorgänger in Richtung Wurzel
­ Kindelement: Direkte Nachfolger
­ Blatt: Knoten/Elemente ohne Nachfolger
­ Teilbaum: Beliebiger Knoten und alle direkten und indirekten Nachfolger
­ Grad
> eines Knotens: Anzahl der Kindelemente
> eine Baums: Maximaler Knotengrad (hier drei)
­ Vielwegbaum: Baum mit Grad > 2
­ Binärbaum: Baum mit Grad = 2
­ Tiefe (eines Knotens): Länge des Pfads bis zur Wurzel (z.B. 2 für Knoten 7) ­ Niveau: Alle Knoten gleicher Tiefe
­ Höhe (eines Baums): Längster Pfad im Baum, größte Tiefe (hier 2)
­ Knoten: Elemente
Niveau 2
1
Binäre Suchbäume
... sind binäre Bäume, bei denen sich im linken/rechten Teilbaum eines jeden Knotens nur kleinere/größere Elemente befinden.
2
Elemente in einen binären Suchbaum einsortieren
a) 10, 5, 14, 7, 18, 12, 6
c) 5, 6, 7, 10, 12, 14, 18
10
5
14
5
12
7
6
7
18
6
10
Reihenfolge des Einfügens ist entscheidend
12
14
b) 5, 10, 7, 14, 12, 18, 6
18
ein zu einer linearen Liste
entarterter binärer Suchbaum
5
10
7
6
14
12
18
3
1
1
-1
10
1
1
-1
1
höhenbilanziert
nicht vollständig
2
5 2
-1
2
2
7
14 0
12
18
6
3
-1
2
1
voll => vollständig => höhenbilanziert
Weitere Definitionen
vollständiger
voller Baum
­ Bilanz: Differenz der Höhen des rechten und linken Teilbaums
Baum
­ Höhenbilanziert Baum: Baum, bei dem jede Bilanz 0, 1 oder ­1 ist
­ Vollständiger Baum: Baum, der auf jedem Niveau n < Höhe die maximale Knotenanzahl hat (auf allen Niveaus außer auf dem "untersten")
­ Voller Baum: Baum, der auf jedem Niveau die maximale Knotenanzahl hat
4
AVL­Baum
­ höhenbilanzierte Suchbäume
­ Adelson, Veliskii, Landis
Rezept (Algorithmus) zum Einfügen von Elementen in AVL­Bäume
1) Einfügen wie bisher
2) Sofort auf Höhenbilanziertheit prüfen
3) Falls die Balance B < ­1 oder >+1, dann Sofort umstrukturien
a) Linksrotation, falls B > 1
b) Rechtsrotation, falls B < ­1
c) Rechtlinksrotation, falls B > 1 und B(direkter Nachfolger) = ­1 ist
d) Linksrechtsrotation, falls B < ­1 und B(direkter Nachfolger) = +1 ist
5
M
F
F
A
O
H
A
F
H M
M
A
O
C
C
Falls ein Knoten nicht höhenbilanziert ist (hier M) wird er nach links/rechts geschoben. Ein möglicher rechter/linker Nachfolger (hier H) wird linker/rechter Nachfolger des rotierten Knotens (hier M)
H
O
C
6
5-8-2-6-10-9
Rezept (Algorithmus) zum Einfügen von Elementen in AVL­Bäume
1) Einfügen wie bisher
2) Sofort auf Höhenbilanziertheit prüfen
3) Falls die Balance B < ­1 oder >+1, dann Sofort umstrukturien
a) Linksrotation, falls B > 1
b) Rechtsrotation, falls B < ­1
c) Rechtlinksrotation, falls B > 1 und B(Nachfolger) = ­1 ist
d) Linksrechtsrotation, falls B < ­1 und B(Nachfolger) = +1 ist
5 1
2
5 2
8 -1
6
8
8 1
2
6
10 -1
9
8 0
5
2
6
05
10
9
2
10
6
-1
9
Ein möglicher linker Nachfolger (hier 6) wird rechter Nachfolger des rotierten Knotens (hier 5)
7
-2
5
1
5
7
2
7
4
2
4
1
5
2
3
1
3
7
4
1
3
1.Teilschritt: Linksrotation (um Nachfolger)
5
4
7
4
2
1
5
2
1
3
7
3
Rezept (Algorithmus) zum Einfügen von Elementen in AVL­Bäume
1) Einfügen wie bisher
2) Sofort auf Höhenbilanziertheit prüfen
3) Falls die Balance B < ­1 oder >+1, dann Sofort umstrukturien
a) Linksrotation, falls B > 1
b) Rechtsrotation, falls B < ­1
c) Rechtlinksrotation, falls B > 1 und B(Nachfolger) = ­1 ist
d) Linksrechtsrotation, falls B < ­1 und B(Nachfolger) = +1 ist
2. Teilschritt: Rechtsrotation (um
"Problemknoten")
1, 7, 3, 4, 2, 6, 5
8
1-7-3-4-2-6-5
2
1
3
1
7 -1
3
3
1
3
7 -1
1
7
7 -2
1
4
1
2
4 1
6
1
3
3
1
7
2
6
4
1 1
6 -1
2
14
7
5
a) Linksrotation, falls B > 1
b) Rechtsrotation, falls B < ­1
c) Rechtslinksrotation, falls B > 1 und B(Nachfolger) ­1 ist
d) Linksrechtsrotation, falls B < ­1 und B(Nachfolger) +1 ist
9
10
Herunterladen