A 26x Durchlaufstrategie

Werbung
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
Diskrete Mathematik I
Vorlesung 8
Binärer Suchbaum IV
AVL-Baum I
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
Durchlaufstrategie: Breitendurchlauf
16
10
24
9
14
13
Warteschlange
A 26x
16
18
15
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
24
9
14
13
Ws
A 26x
16
18
15
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
24
9
14
13
Ws
A 26x
10
18
15
24
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
9
14
13
Ws
A 26x
10
18
15
24
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
9
14
13
Ws
A 26x
24
18
15
9
14
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
9
14
13
Ws
A 26x
24
18
15
9
14
24
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
9
14
13
Ws
A 26x
9
18
15
14
18
24
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
24
9
9
14
13
Ws
A 26x
9
18
15
14
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
24
9
9
14
13
Ws
A 26x
14
18
15
18
14
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
24
9
9
14
13
Ws
A 26x
18
18
15
13
15
14
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
24
9
9
14
13
Ws
A 26x
18
18
15
13
15
14
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
24
9
9
14
13
Ws
A 26x
13
18
15
15
14
18
13
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
24
9
9
14
13
Ws
A 26x
15
18
15
14
18
13
15
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Durchlaufstrategie: Breitendurchlauf
16
16
10
10
24
24
9
9
14
13
Ws
A 26x
18
15
14
18
13
15
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
Test auf Ende
Durchlaufstrategie: Breitendurchlauf
entferne
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());
}
}
...
}
A 2x
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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; }
}
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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;
}
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
Breitendurchlauf: Entferne vorne
.
.
.
Knoten Entferne() {
Knoten erster = null;
if (kopf != null) {
erster = kopf.GibWert();
kopf = kopf.GibWeiter();
if (kopf == null)
fuss = null;
}
return erster;
}
}
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Beispiele für den Aufbau binärer Suchbäume
Eingabefolge 1-2-3
Eingabefolge 3-2-1
1
3
2
2
3
Eingabefolge 2-3-1 oder 2-1-3
1
Eingabefolge 3-1-2
3
2
1
A 7x
1
3
2
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
AVL-Baum (Definition)
Ein binärer Baum heißt ausgeglichener Baum oder AVL-Baum (nach AdelsonVelskij und Landis), falls sich für jeden Knoten k die Höhen h der beiden
Teilbäume um höchstens 1 unterscheiden.
18
19
Diskrete Mathe 1
1
2
3
4
AVL-Baum: Beispiel
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
Balancefaktor
Balancefaktor bal(k)
bal(k) = h(rechter Teilbaum von k) - h(linker Teilbaum von k)
Für AVL-Bäume gilt:
bal(k) {1,0,1}
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AVL-Baum: Beispiel
+1
-1
0
+1
0
+1
0
A 2x
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AVL-Baum: Beispiel
+1
-1
0
+1
0
+1
0
A 2x
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AVL-Baum: Beispiel
+2
0
+1
0
+1
0
A 2x
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+1
0
33
0
0
26
A 36x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+1
0
33
0
0
26
A 36x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+1
0
33
0
0
26
A 36x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+1
0
33
0
0
26
A 36x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+1
0
33
0
0
26
A 36x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+1
0
33
0
0
39
26
30
A 36x
0
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+1
0
33
0
+1
39
26
30
A 36x
0
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+1
0
33
-1
+1
39
26
30
A 36x
0
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+2
0
33
-1
+1
Ausgeglichenheit
ist verletzt
39
26
30
A 36x
0
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+2
0
33
-1
+1
Ausbalancieren
durch Rotation
39
26
30
A 36x
0
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+2
0
33
-1
+1
R- Rotation
39
26
30
A 36x
0
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+2
0
33
-1
+1
39
26
30
A 36x
0
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
+2
0
33
-1
+1
39
26
30
A 36x
0
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
0
+2
26
33
L- Rotation
30
A 36x
39
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
0
+2
26
33
30
A 36x
39
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
20
11
0
17
0
+2
26
33
30
A 36x
39
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
26
11
0
20
17
A 36x
0
0
0
33
0
0
30
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
Einfügen von k = 30
8
3
0
+1
0
26
11
0
20
17
A 36x
0
0
0
33
0
0
30
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Einfügen von Knoten
14
8
3
0
+1
0
26
11
0
20
17
A 36x
0
0
0
33
0
0
30
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 8
14
8
3
0
0
20
11
0
17
+1
0
33
0
0
26
A 9x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 8
14
8
3
0
0
20
11
0
17
+1
0
33
0
0
26
A 9x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 8
14
8
3
0
0
20
11
0
17
+1
0
33
0
0
26
A 9x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 8
14
11
3
0
-1
20
17
+1
0
33
0
0
26
A 9x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 8
14
11
3
0
-1
20
17
+1
0
33
0
0
26
A 9x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 8
14
11
3
0
-1
20
17
+1
0
33
0
0
26
A 9x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 11
11
3
0
14
-1
20
17
+1
0
33
0
0
26
A 15x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 11
11
3
0
14
-1
20
17
+1
0
33
0
0
26
A 15x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 11
11
3
0
14
-1
20
17
+1
0
33
0
0
26
A 15x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+1
Löschen von k = 11
14
3
0
20
17
+1
0
33
0
0
26
A 15x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+2
Löschen von k = 11
14
3
0
20
17
+1
0
33
0
0
L- Rotation
A 15x
26
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+2
Löschen von k = 11
14
3
0
20
17
+1
0
33
0
0
26
A 15x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
+2
Löschen von k = 11
14
3
0
20
17
+1
0
33
0
0
26
A 15x
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
0
Löschen von k = 11
14
3
A 15x
0
20
0
33
17
0
26
0
0
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Löschen von Knoten
0
20
14
3
A 15x
0
0
33
17
0
26
0
0
39
0
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
L-Rotation
+1
k1
0
k2
T1
A 7x
T2
T3
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
L-Rotation
+2
k1
+1
k2
T1
T2
T3
x
A 7x
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
L-Rotation
+2
k1
+1
k2
T1
T2
T3
x
A 7x
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
L-Rotation
+2
k1
+1
k2
T1
T2
T3
x
A 7x
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
L-Rotation
0
k2
k1
0
T3
T1
A 7x
T2
x
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 LLRotation): Umhängen von vier Kanten
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
LR-Rotation
-1
k1
0
k2
0
k3
T1
A 14x
T4
T2
T3
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
LR-Rotation
-2
k1
+1
k2
+1
k3
T1
T4
T2
T3
x
A 14x
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
LR-Rotation
-2
k1
+1
k2
+1
k3
T1
T4
T2
T3
x
A 14x
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
LR-Rotation
-2
k1
+1
k2
+1
k3
T1
T4
T2
T3
x
A 14x
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
LR-Rotation
-2
k1
+1
k2
+1
k3
T1
T4
T2
T3
x
A 14x
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
LR-Rotation
-2
k1
-1
-1
k3
k2
T4
T3
T1
A 14x
T2
x
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
LR-Rotation
-2
k1
-1
-1
k3
k2
T4
T3
T1
A 14x
T2
x
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
LR-Rotation
-2
k1
-1
-1
k3
k2
T4
T3
T1
A 14x
T2
x
13
14
15
16
17
18
19
Diskrete Mathe 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
LR-Rotation
0
k3
0
-1
k1
k2
T2
T1
A 14x
T3
x
T4
19
Herunterladen