![Page 1: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/1.jpg)
SS17
Algorithmen und Datenstrukturen
3. Kapitel
Binarbaume
Martin Dietzfelbinger
April 2017
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3
![Page 2: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/2.jpg)
3.1 Binarbaume: Grundlagen
Der Datentyp (und die Datenstruktur) Binarbaum tritt uberall
in der Informatik auf:
• als binarer Suchbaum
• als Reprasentation von binaren Ausdrucken
(logisch, arithmetisch)
• als Entscheidungsbaum
• als Codierungs-/Decodierungsbaum
• als binarer Heap (spater)
• . . .
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 1
![Page 3: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/3.jpg)
Beispiel 1:
Arithmetischer Ausdruck mit zweistelligen Operatoren:
((((x2 · x4) + ((x3 − x7)− (x6/x1))) + (x5 · (x9 · x3)))/ ((x5 − x6)− x1))
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 2
![Page 4: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/4.jpg)
x
1x
6x5x
3xx9
5x
1x6xx73x
4x2
−
−
−
− /
/
+
+
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 3
![Page 5: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/5.jpg)
Auswertung:
1) Ordne den Blattern konkrete Werte zu, z.B. x1 = 5, x2 = 3,
x3 = −2, x4 = −7, x5 = 7, x6 = 10, x7 = 5, x9 = −5.
2) Werte aus, von den Blattern startend (”bottom-up“).
5
7−21
−3
107
−2−5
5105
−73
40
−30 70
−2
−8
−5
−9
2−7
10
−+
−
+
/
/
−
−
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 4
![Page 6: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/6.jpg)
Beispiel 2: Codierungs-/Decodierungsbaum
Zeichen aus Alphabet Σ erhalten binare Codes.
Diese konnen auch verschiedene Lange haben:
”Wenige Bits fur haufige Buchstaben, viele Bits fur seltene.“
Mini-Beispiel:
A B C D E F G H I K
1100 0110 000 111 10 0011 010 0010 0111 1101
Zur Codierung von Zeichenreihen benutzt man direkt die
Tabelle.
Beispiel:
FEIGE hat Codierung 0011 10 0111 010 10.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 5
![Page 7: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/7.jpg)
”Prafixfreier“ Code: Kein Codewort ist Anfangsstuck eines
anderen. Damit:”eindeutig decodierbar“;
Fuge zwischen Codes fur Buchstaben muss nicht markiert wer-
den: Schreibe 001110011101010 statt 0011 10 0111 010 10.
Kompakte Reprasentation des Codes als Binarbaum:
A K
D
B
G
I
C
H F
0
0
0
0
0
0 0
0
0
1
1
1
11
1
1
1
1
E
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 6
![Page 8: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/8.jpg)
A K
D
B
G
I
C
H F
0
0
0
0
0
0 0
0
0
1
1
1
11
1
1
1
1
E
Blatter sind mit Buchstaben markiert; Weg von der Wurzel
zum Blatt gibt das Codewort wieder (links: 0, rechts: 1).
Decodierung: Laufe Weg im Baum, vom Codewort gesteuert,
bis zum Blatt.
Wegen Prafixeigenschaft: im Code keine Zwischenraume notig.
Beispiel: 0000010100011 liefert”CHEF“.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 7
![Page 9: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/9.jpg)
Binarbaum-Terminologie: Uberblick
v2
v3
l1 l2
l5 l6
l9 l10
v4
v1
v5
l3
8l
l7
v6
l4l0
v9
v8
v7
v2
v5
v9
Kante/Zeiger
Wurzel
Blatt,
Vater von
v10
vonlinkes Kind
vonrechtes Kind
externer/äußerer Knoten
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 8
![Page 10: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/10.jpg)
Mathematische Struktur:”
flach“
Definition 3.1.1
Ein Binarbaum T besteht aus einer endlichen Menge V von
”inneren“ Knoten, einer dazu disjunkten endlichen Menge L
von”außeren“ Knoten sowie einer injektiven Funktion
child : V × {left, right} → V ∪ L,
wobei Folgendes gilt:
(i) In V ∪ L gibt es genau einen Knoten r, der nicht als Wert
child(v, left ) oder child(v, right ) vorkommt.
Dieser Knoten r heißt die Wurzel.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 9
![Page 11: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/11.jpg)
Mathematische Struktur:”
flach“ (Forts.)
child(v, left ) [child(v, right )] heißt das linke [rechte] Kindvon v ∈ V .
Weil child injektiv ist, gibt es fur jeden Knoten w ∈ (V ∪ L)
mit w 6= r genau einen Knoten u ∈ V mit w = child(u, left)
oder w = child(u, right) (aber nicht beides).
Dieser Knoten u wird mit p(w) bezeichnet und heißt der
Vorgangerknoten oder Vaterknoten von w.
Wir sagen:
Von p(w) nach w
verlauft eine Kante.
w heißt [linkes bzw. rechtes]
Kind von p(w).
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 10
![Page 12: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/12.jpg)
Mathematische Struktur:”
flach“ (Forts.)
Die folgende Struktur erfullt (i), ist aber kein Binarbaum:
(ii)”
Kreisfreiheit“: Fur jeden Knoten w ∈ V ∪ L gilt:
Die Folge v0 = w, v1 = p(w), v2 = p(v1), v3 = p(v2), . . .
bricht nach endlich vielen Schritten mit einem vd = r ab.(Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. JederKnoten des Binarbaums ist von der Wurzel aus erreichbar.)
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 11
![Page 13: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/13.jpg)
Mathematische Struktur:”
flach“ (Forts.)
Knoten und Kanten konnen Markierungen (oder Beschrif-tungen) tragen, die auch als Funktionen dargestellt werden.
Knotenmarkierungen: (D, Z sind beliebige Mengen.)
Funktionen mV : V → D und mL : L→ Z.
Kantenmarkierungen: (X ist beliebige Menge.)
Funktion mK : V × {left, right} → X .
Beispiel: In einem Codierungsbaum sind die Blatter mit Buch-
staben markiert, die beiden Kanten, die aus einem inneren
Knoten herausfuhren, mit 0 und 1.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 12
![Page 14: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/14.jpg)
Mathematische Struktur: rekursiv
D: Menge von Knotenmarkierungen
Z: Menge von Blattmarkierungen
(Induktive) Definition 3.1.2
(i) Wenn z ∈ Z, dann ist (z) ein (D,Z)-Binarbaum.
// Blatt mit Markierung z. Auch: z (ohne Klammern), z
(ii) Wenn T1, T2 (D,Z)-Binarbaume sind und x ∈ D ist,
dann ist auch (T1, x, T2) ein (D,Z)-Binarbaum.
// Wurzel mit Markierung x, linker Unterbaum T1, rechter Unterbaum T2.
(iii)∗ Nichts sonst ist (D,Z)-Binarbaum.
∗(iii) wird bei induktiven Definitionen meist weggelassen.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 13
![Page 15: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/15.jpg)
Beispiel : D = {a, . . . , z} und Z = N. – Tupeldarstellung:
(((37,b, (17, a, 31)), c, 7),b, ((29,d, (1, r, 23)), z, (13,u, 3)))
Graphische Darstellung:
29
31 1
3
7
2317
1337
b
z
u
r
d
a
b
c
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 14
![Page 16: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/16.jpg)
Beispiel : Arithmetischer Ausdruck als BaumD = {+,−, ·, /} und Z = {x1, x2, x3, . . .}.
x
1x
6x5x
3xx9
5x
1x6xx73x
4x2
−
−
−
− /
/
+
+
((((x2 · x4) + ((x3 − x7)− (x6/x1))) + (x5 · (x9 · x3)))/((x5 − x6)− x1))
Der Ausdruck ist genau die Tupeldarstellung ohne Kommas!
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 15
![Page 17: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/17.jpg)
Mathematische Struktur: rekursiv (Forts.)
(((37,b, (17, a, 31)), c, 7),b, ((29,d, (1, r, 23)), z, (13,u, 3)))
Beachte: Man kann die rekursiv definierten Binarbaume auf
zwei (letztendlich aquivalente) Arten auffassen:
(a) als geschachtelte Tripel oder
(b) als Zeichenreihen mit Symbolen aus D ∪ Z ∪ {(, ), “,”}.Auffassung (a) ist mathematisch klarer, da aus gegebenem T = (T1, x, T2)die Komponenten T1, x und T2 unmittelbar abgelesen werden konnen(ohne Syntaxanalyse o. a.).
Vorteil der rekursiven Auffassung:Ubersichtlichere (rekursive) Programme und Korrektheitsuberlegungen.
Vorteil der”flachen“ Auffassung:
Eventuell effizientere Ausfuhrung (Schleifen statt rekursive Prozeduraufrufe).
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 16
![Page 18: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/18.jpg)
(((37,b, (17, a, 31)), c, 7),b, ((29,d, (1, r, 23)), z, (13,u, 3)))
(Rekursiver) Umbau von rekursiver zu”flacher“ Struktur:
Sei T ein (D,Z)-Binarbaum.
Wenn T = z = (z) fur ein z ∈ Z, dann ist die”flache“
Version von T ein außerer Knoten mit Inschrift z. Dieser ist
auch die Wurzel.
Wenn T = (T1, x, T2), dann werden rekursiv”flache“ Versio-
nen der beiden Unterbaume T1 und T2 hergestellt, mit Wurzeln
r1 und r2 und disjunkten Knotenmengen V1, V2, L1, L2.
V := V1 ∪ V2; L := L1 ∪ L2; child := child1 ∪ child2.
Schließlich wird ein neuer innerer Knoten r mit Inschrift x
erzeugt und zusatzlich child(r, left) = r1 und
child(r, right) = r2 gesetzt.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 17
![Page 19: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/19.jpg)
Baum, rekursiv, als Text →”
flache“ Struktur
Umbau von rekursiver Struktur (Text) zu”flacher“ Struktur:
Prozedur TreeText2Flat()Verfahren: Liest (D,Z)-Binarbaum (als Textstrom) von links nach rechts,baut T (
”flach“) mit Wurzel v.
lies”(“; //
”lies“ heißt: Zeichen wird verbraucht
wenn nachstes Zeichen z ∈ Z ist: lies z; T ← z ; dies ist Wurzel von T ;sonst:
baue leere Wurzel v fur T ;T1 ← TreeText2Flat(); child(v, left)← Wurzel v1 von T1;lies
”,“;
lies Element x ∈ D; data(v)← x;lies
”,“;
T2 ← TreeText2Flat(); child(v, right)← Wurzel v2 von T2;lies
”)“.
return T , mit Wurzel v.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 18
![Page 20: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/20.jpg)
Umbau von”flacher“ zu rekursiver Struktur:
Gegeben: Baum T mit Knotenbeschriftungen
als V , L, child, mV : V → D und mL : L→ Z.
Baue rekursiv fur jeden Knoten v ∈ V ∪ L einen Baum Tv.
Prozedur Flat2Tree(v) arbeitet folgendermaßen
(die Beschreibung von T ist global gegeben):
Falls v ∈ L ein Blatt mit mL(v) = z ist: return Tv = (z).
Falls v ∈ V ein innerer Knoten mit mV (v) = x ist:
T1← Flat2Tree(child(v, left));
T2← Flat2Tree(child(v, right));
return Tv = (T1, x, T2).
Um T zu transformieren: Flat2Tree(r) fur Wurzel r von T .
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 19
![Page 21: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/21.jpg)
Spezifikation des Datentyps”
Binarbaum“
Datentyp Binarbaum uber D: (leere außere Knoten)
1. Signatur:
Sorten: ElementsBintreesBoolean
Operationen: empty : → BintreesbuildTree: Elements × Bintrees × Bintrees → BintreesleftSubtree: Bintrees → BintreesrightSubtree: Bintrees → Bintreesdata: Bintrees → Elementsisempty : Bintrees → Boolean
2. Mathematisches Modell:
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 20
![Page 22: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/22.jpg)
Sorten: Elements: (nichtleere) Menge D
Bintrees: {T | T ist (D, {−})-Binarbaum}Boolean: {true, false}
Op’en: empty= (−) =: � //”leerer Baum“
buildTree(x, T1, T2) := (T1, x, T2)
leftSubtree(T ) :=
{T1, falls T = (T1, x, T2)
undefiniert, falls T = �
rightSubtree(T ) :=
{T2, falls T = (T1, x, T2)
undefiniert, falls T = �
data(T ) :=
{x, falls T = (T1, x, T2)
undefiniert, falls T = �
isempty(T ) :=
{false, falls T = (T1, x, T2)
true, falls T = �
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 21
![Page 23: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/23.jpg)
Binarbaume, Implementierung I:Zeigerstruktur bzw. Referenzstruktur, vgl. AuP-Vorlesung.
Mit markierten externen Knoten.
T
b
b
a
z
r
u
:
c
d
29
31 1
3
7
2317
1337
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 22
![Page 24: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/24.jpg)
Binarbaume, Implementierung II: Leere externe Knoten
T
b
b
a
z
r
u
:
c
d
Externe Knoten werden nicht reprasentiert
(null-Zeiger/Referenz).
Oder: 1 externer Knoten `, Referenz auf ` statt null.
Speicherplatzbedarf fur n Knoten:
n Dateneintrage, 2n Zeiger/Referenzen, davon n+1 mal null.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 23
![Page 25: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/25.jpg)
Mogliche Erweiterung: Vaterzeiger.
b
a r
ud
z
b
c
Wurzel
T:
Erleichtert Navigieren im Baum, besonders bei Verwenden der
”flachen“ Auffassung und von iterativen Verfahren.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 24
![Page 26: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/26.jpg)
Implementierung der Operationen des mathematischen
Modells:
Baum wird immer als Zeiger bzw. Referenz auf den Wurzel-
knoten dargestellt.
empty, isempty, data: klar.
leftSubtree, rightSubtree: Zeiger/Referenz zuruckgeben.
buildTree(x, T1, T2) erzeugt einen neuen Knoten (Wurzel) r
mit Eintrag x, die Wurzeln von T1 bzw. T2 werden linkes bzw.
rechtes Kind von r.
Der Benutzer der buildTree-Operation muss sicherstellen,
dass die Knotenmengen von T1 und T2 disjunkt sind!
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 25
![Page 27: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/27.jpg)
3.2 Binarbaume: Terminologie
• Binarbaum, engl:”binary tree“
• (innerer) Knoten v, engl:”node“
• Knoteneintrag: x = data(v) = data(T ′) (T ′ = Tv)
x v
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 26
![Page 28: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/28.jpg)
• Tv: Unterbaum mit Wurzel v
Tv
vx
Der Teil von T , der aus den Knoten besteht, deren Weg zur
Wurzel durch v verlauft. Die Wurzel ist v. Dabei kann v ein
beliebiger innerer oder außerer Knoten sein.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 27
![Page 29: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/29.jpg)
• (außerer) Knoten ≡ Blatt l, engl:”leaf“, Plural
”leaves“
• Wurzel, engl:”root“
lz
• Blatteintrag: z = data(l)
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 28
![Page 30: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/30.jpg)
• Vater ≡ (unmittelbarer) Vorganger,
engl:”parent“, von v: p(v)
• linkes Kind ≡ (unmittelbarer) Nachfolger, Sohn,
engl:”left child“, von v: child(v, left)
• rechtes Kind ≡ (unmittelbarer) Nachfolger, Sohn,
engl:”right child“, von v: child(v, right)
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 29
![Page 31: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/31.jpg)
• Vorfahr (Vater von Vater von Vater . . . von v),
engl:”ancestor“ (Im Bild: v ist Vorfahr von u.)
• Nachfahr (Kind von Kind von . . . von v),
engl:”descendant“ (Im Bild: u ist Nachfahr von v.)
u
v
Achtung: Oft gilt v als (uneigentlicher) Vorfahr/Nachfahr von v.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 30
![Page 32: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/32.jpg)
• Weg in T : Knotenfolge oder Kantenfolge, die von v zu
einem Nachfahren u fuhrt
• Lange eines Wegs (v0, v1, . . . , vs):
Anzahl s der Kanten auf dem Weg
u
v
vvonWeg der Länge 3
nach u
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 31
![Page 33: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/33.jpg)
Haufiger Spezialfall:
Die externen Knoten � haben keinen Eintrag.
(Bzw. jeder hat denselben nichtssagenden Eintrag, z.B.”−“ .)
Ein solcher externer Knoten wird auch als”leerer Baum“
bezeichnet.
"Blätter"
Oft bezeichnet man dann die inneren Knoten, die keinen
inneren Knoten als Nachfolger haben, als”Blatter“.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 32
![Page 34: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/34.jpg)
Tiefe/Level eines Knotens
Die Lange (das ist die Kantenzahl) des Wegs
(v0, v1, . . . , vd) von der Wurzel r = v0 zum Knoten v = vdheißt die Tiefe oder das Level d(v) von Knoten v.
Auch externen Knoten wird so eine Tiefe zugeordnet.
vd v
4
3
2
1
( )=3
0
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 33
![Page 35: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/35.jpg)
Tiefe/Hohe eines Binarbaums
Die Tiefe oder Hohe d(T ) (auch: h(T )) eines Binarbaums T
ist definiert wie folgt:
1. Fall: Die externen Knoten sind leer (�):
d(T ) = max({−1} ∪ {d(v) | v innerer Knoten in T}).
Beobachte induktive Formel:
d(T ) = −1 fur T = � und
d((T1, x, T2)) = 1 + max{d(T1), d(T2)}.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 34
![Page 36: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/36.jpg)
Beispiele: Tiefen/Hohen von Binarbaumen mit leeren externen
Knoten.
Höhe 0Höhe −1
Hohe 3:
x
x5
x6
x71
x2
x3
Tx
T
41
2
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 35
![Page 37: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/37.jpg)
Tiefe/Hohe eines Binarbaums
Definition der Tiefe/Hohe von T :
2. Fall: Die externen Knoten sind nicht leer ((z), z ∈ Z):
d(T ) := max{d(v) | v außerer Knoten in T}.
A K
D
B
G
I
C
H F
0
0
0
0
0
0 0
0
0
1
1
1
11
1
1
1
1
E
Tiefe 4, gleich der maximalen Lange eines Weges zu einem Blatt.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 36
![Page 38: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/38.jpg)
Definition der Hohe eines Knotens:
Die Hohe h(v) eines Knotens in T ist definiert als die Tiefed(Tv) des Teilbaums mit Wurzel v. – Beispiel :
Höhe: 4
Höhe: 2
Höhe: 0
Höhe: 5
Höhe: 1
Hier angegeben: Fall”Blatter nicht leer“.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 37
![Page 39: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/39.jpg)
3.3 Binarbaume: EigenschaftenProposition 3.3.1
Es sei T ein Binarbaum mit n ≥ 0 inneren Knoten
und leeren außeren Knoten. Dann gilt:
(a) T hat 2n Zeiger/Kanten. (Beispiel: n = 10, 2n = 20)
(b) T hat n+ 1 außere Knoten. (Beispiel: n+ 1 = 11)
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 38
![Page 40: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/40.jpg)
(c) Auf Level l liegen hochstens 2l Knoten, l = 0, 1, 2, . . ..
(d) Auf Level 0, 1, . . . , l zusammen liegen hochstens
1 + 2 + 4 + · · ·+ 2l = 2l+1 − 1
innere Knoten. Daraus: log(n + 1) ≤ l + 1, fur das Level l
mit dem tiefsten inneren Knoten.
(e) n− 1 ≥ d(T ) ≥ dlog(n+ 1)e − 1.
Merke: Die Tiefe eines Binarbaums mit n inneren Knoten ist
mindestens log n− 1.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 39
![Page 41: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/41.jpg)
Beweis von 3.3.1:
(a) Jeder innere Knoten hat zwei Zeiger/Kanten zu Kindern.
(b) Jeder Knoten außer der Wurzel hat eine eingehende Kante. Nach (a)gibt es 2n Kanten, und es gibt n− 1 innere Knoten, die nicht die Wurzelsind. Daher muss es 2n− (n− 1) = n+ 1 außere Knoten geben.
(c) Beweis durch Induktion uber l.l = 0: Nur die Wurzel hat Level 0, und 20 = 1.
”l − 1 → l“: Nach I.V. liegen auf Level l − 1 hochstens 2l−1 Knoten.
Jeder davon hat hochstens zwei Kinder. Also liegen auf Level l hochstens2l−1 · 2 = 2l Knoten.
(d) Sei l das maximale Level, das einen inneren Knoten enthalt. Alle Levelsbis l zusammen enthalten n Knoten; nach (c) ist n ≤ 20 + 21 + · · · + 2l.Die Schranke n ≤ 2l+1 − 1 folgt dann mit Hilfe der Summenformel∑
0≤l<k ql = (qk − 1)/(q − 1) fur geometrische Reihen.
Dann folgt n+ 1 ≤ 2l+1, also durch Logarithmieren: log(n+ 1) ≤ l + 1.
(e) In der Situation von (d) gilt l ≥ log(n + 1) − 1; weil l ganzzahlig ist,folgt l ≥ dlog(n+ 1)e − 1. �
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 40
![Page 42: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/42.jpg)
Proposition 3.3.2
Es sei T ein Binarbaum mit N ≥ 1 nichtleeren außeren
Knoten. Dann gilt:
(a) T hat n = N − 1 innere Knoten. (Bsp.: N = 11, n = 10)
(b) T hat 2N − 2 Zeiger/Kanten.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 41
![Page 43: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/43.jpg)
(c) N ≤ 2d(T ).
(Beweis: Induktion uber Binarbaume, rekursive Struktur.)
(d) N − 1 ≥ d(T ) ≥ dlogNe.
Merke: Die Tiefe eines Binarbaums mit N nichtleerenaußeren Knoten ist mindestens logN .
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 42
![Page 44: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/44.jpg)
Beweis von 3.3.2:
(a) Dies ist nur eine Umformulierung von Prop. 3.3.1(b).
(b) Dies ist eine Umformulierung von Prop. 3.3.1(a).
(c) Durch (verallgemeinerte) Induktion uber d(T ) zeigen wir, dass dieAnzahl NT der Blatter von T nicht großer als 2d(T ) ist.I.A.: d(T ) = 0: NT = 1 und 20 = 1.I.Schritt: Sei d(T ) > 0.Dann hat T eine Wurzel, die innerer Knoten ist, und zwei Unterbaume T1und T2 mit max{d(T1), d(T2)} = d(T )− 1.Baum T hat NT = NT1 +NT2 Blatter.
Nach I.V. gilt NTi≤ 2d(Ti), also NTi
≤ 2d(T )−1, fur i = 1, 2.Also: NT = NT1 +NT2 ≤ 2 · 2d(T )−1 = 2d(T ).
(d) Ergebnis (c) bedeutet NT ≤ 2d(T ).Logarithmieren liefert log(NT ) ≤ d(T ). �
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 43
![Page 45: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/45.jpg)
Totale innere WeglangeWieviele Kanten durchlaufe ich insgesamt, wenn ich zu jedem
inneren Knoten einmal hinlaufe?
0 + 2 · 1 + 3 · 2 + 3 · 3 + 1 · 4 = 21
Totale innere Weglange (”total internal path length“):
TIPL(T ) :=∑
v∈V d(v). (Im Beispiel: 21.)
Mittlere innere Weglange: 1n · TIPL(T ). (Im Beispiel 21
10.)
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 44
![Page 46: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/46.jpg)
Totale außere Weglange
Wieviele Kanten durchlaufe ich insgesamt, wenn ich zu jedem
außeren Knoten einmal hinlaufe?
2 + 3 · 3 + 5 · 4 + 2 · 5 = 41.
Totale außere Weglange (”total external path length“):
TEPL(T ) :=∑
l∈L d(l). (Im Beispiel: 41.)
Mittlere außere Weglange: TEPL(T )/(n+ 1). (Im Beispiel 4111.)
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 45
![Page 47: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/47.jpg)
Proposition 3.3.3
Fur jeden Binarbaum mit n inneren Knoten gilt:
TEPL(T ) = TIPL(T ) + 2n.
Beweis: Induktion uber die Knotenanzahl von Binarbaumen.
z
( ):z
I.A.: n = 0:
TEPL(T ) = 0 (ein Weg der Lange 0) und
TIPL(T ) = 0 (leere Summe, da kein innerer Knoten).
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 46
![Page 48: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/48.jpg)
I.V.: n > 0, Beh. richtig fur alle T ′ mit n′ < n inneren
Knoten.
D. h.: TEPL(T ′)− TIPL(T ′) = 2n′.
I.S.:
x
1T T 2
1 2( ):T ,x,T T =
n1 = Anzahl innerer Knoten in T1;
n2 = Anzahl innerer Knoten in T2.
Klar: n = 1 + n1 + n2.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 47
![Page 49: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/49.jpg)
Die n1 + 1 bzw. n2 + 1 externen Knoten in den Teilbaumen
hangen in T ein Level tiefer:
TEPL(T ) = (TEPL(T1) + (n1 + 1)) + (TEPL(T2) + (n2 + 1)).
Auch die n1 bzw. n2 internen Knoten in den Teilbaumen
hangen in T ein Level tiefer:
TIPL(T ) = 0︸︷︷︸Wurzel
+(TIPL(T1) + n1) + (TIPL(T2) + n2).
Subtraktion liefert:
TEPL(T )− TIPL(T )
= (TEPL(T1)− TIPL(T1)) + (TEPL(T2)− TIPL(T2)) + 2
I.V.= 2n1 + 2n2 + 2 = 2n. �
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 48
![Page 50: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/50.jpg)
Nachstes Ziel: Auch die mittlere Weglange in Binarbaumen
wachst mindestens logarithmisch mit der Knotenanzahl.
.
14 + 3 · 18 + 6 · 1
16 = 1
Lemma 3.3.4
Es sei L die Menge der außeren Knoten in einem Binarbaum T .
Dann gilt:∑l∈L
2−d(l) = 1.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 49
![Page 51: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/51.jpg)
Nachstes Ziel: Auch die mittlere Weglange in Binarbaumen
wachst mindestens logarithmisch mit der Knotenanzahl.
1/16 1/16 1/16 1/16 1/16 1/16
1/8 1/8
1/4
1/8
.
14 + 3 · 18 + 6 · 1
16 = 1
Lemma 3.3.4
Es sei L die Menge der außeren Knoten in einem Binarbaum T .
Dann gilt:∑l∈L
2−d(l) = 1.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 49
![Page 52: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/52.jpg)
Beweis: Wie in einem Kodierungsbaum markiere in jedem
inneren Knoten die Kante zum linken Kind mit 0, die zum
rechten Kind mit 1.
Jedem Blatt l entspricht dann eine Bitfolge wl = b1 · · · bd(l).Sei D = d(T ) die Tiefe des tiefsten Blatts.
Jedes wl kann man auf 2D−d(l) Arten zu einer Bitfolge der
Lange D verlangern.
Alle so erzeugten Bitfolgen sind verschieden;
alle 2D Bitfolgen werden so erzeugt.
⇒∑l∈L
2D−d(l) = 2D.
⇒ Behauptung. �
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 50
![Page 53: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/53.jpg)
Proposition 3.3.5
T hat N = n+ 1 außere Knoten ⇒ TEPL(T ) ≥ N logN .
Beweis: Die Logarithmusfunktion ist konkav :
log((1− λ)a+ λb)) ≥ (1− λ) log a+ λ log b, fur 0 ≤ λ ≤ 1.
Daraus: log( 1M
∑1≤i≤M ai) ≥ 1
M
∑1≤i≤M log(ai).
Anwenden auf M = N = n+ 1 und al = 2−d(l), l ∈ L:
log( 1N
∑l∈L 2−d(l)) ≥ 1
N
∑l∈L(−d(l)).
D.h.: TEPL(T ) =∑
l∈L d(l) ≥ −N log(
1N
∑l∈L
2−d(l)︸ ︷︷ ︸=1
)
Der letzte Term ist = −N log( 1N ) = N logN . �
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 51
![Page 54: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/54.jpg)
Folgerung: Fur die mittlere außere Weglange eines
Binarbaums T mit N Blattern gilt:
1
NTEPL(T ) ≥ logN.
Nach Proposition 3.3.3: TEPL(T ) = TIPL(T ) + 2n
Also: TIPL(T ) ≥ TEPL(T )−2n ≥ (n+ 1) log(n+ 1)−2n > n(log n−2).
Folgerung: Fur die mittlere innere Weglange eines
Binarbaums T mit n Knoten gilt:
1
nTIPL(T ) > log n− 2.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 52
![Page 55: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/55.jpg)
3.4 Durchlaufe durch Binarbaume(D,Z)-Binarbaume kann man systematisch durchlaufen, die
Knoten nacheinander besuchen und (anwendungsabhangige)
Aktionen an den Knoten ausfuhren.
Abstrakt gefasst: visit-Operation:
organisiere data-Teil der Knoten als Objekte einer Klasse;
visit(T) lost Abarbeitung einer Methode von data(T ) aus.
Moglichkeiten fur visit bei Knoten v:
– Daten data(v) ausgeben;
– laufende Nummer fur v vergeben;
– Zeiger auf v an Liste anhangen;
– zu v gehorende Aktion ausfuhren
(z. B. arithmetische Operation durchfuhren) usw.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 53
![Page 56: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/56.jpg)
Inorder-Durchlauf durch T
falls T = (z):
e-visit(z) ; // besuche außeren Knoten
falls T = (T1, x, T2):
Inorder-Durchlauf durch T1;
i-visit(x) ; // besuche inneren Knoten
Inorder-Durchlauf durch T2.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 54
![Page 57: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/57.jpg)
Inorder-Durchlauf durch T
���� ����
����
����
��������
��������
����
��������
��������
��������
����
����
��
��������
��������
������
29
31 1
3
7
2317
1337
b
z
u
r
d
a
b
c
Ausgabe: 37,b, 17, a, 31, c, 7,b, 29,d, 1, r, 23, z, 13,u, 3.
Beobachte: Abwechselnd externe und interne Knoten.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 55
![Page 58: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/58.jpg)
Praorder-Durchlauf durch T
falls T = (z):
e-visit(z) ;
falls T = (T1, x, T2):
i-visit(x) ;
Praorder-Durchlauf durch T1;
Praorder-Durchlauf durch T2;
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 56
![Page 59: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/59.jpg)
Praorder-Durchlauf durch T
���� ����
����
����
��������
��������
����
��������
��������
��������
����
��
����
��
��
��
����
29
31 1
3
7
2317
1337
b
z
u
r
d
a
b
c
Ausgabe: b, c,b, 37, a, 17, 31, 7, z,d, 29, r, 1, 23,u, 13, 3
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 57
![Page 60: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/60.jpg)
Postorder-Durchlauf durch T
falls T = (z):
e-visit(z) ;
falls T = (T1, x, T2):
Postorder-Durchlauf durch T1;
Postorder-Durchlauf durch T2;
i-visit(x) ;
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 58
![Page 61: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/61.jpg)
Postorder-Durchlauf durch T
���� ����
����
����
��������
��������
����
��������
��������
����
����
��
��
��������
����
����
��
29
31 1
3
7
2317
1337
b
z
u
r
d
a
b
c
Ausgabe: 37, 17, 31, a,b, 7, c, 29, 1, 23, r,d, 13, 3,u, z,b.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 59
![Page 62: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/62.jpg)
Beispiel : Arithmetischer Ausdruck als BaumD = {+,−, ·, /} und Z = {x1, x2, x3, . . .}.
x
1x
6x5x
3xx9
5x
1x6xx73x
4x2
−
−
−
− /
/
+
+
Ordne den Blattern konkrete Werte zu, z.B. x1 = 5, x2 = 3,
x3 = −2, x4 = −7, x5 = 7, x6 = 10, x7 = 5, x9 = −5.
Auswertungsprozedur ordnet jedem Knoten einen Wert zu.
Geeignete Reihenfolge: Postorder-Durchlauf.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 60
![Page 63: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/63.jpg)
Beispiel : Arithmetischer Ausdruck als BaumD = {+,−, ·, /} und Z = {x1, x2, x3, . . .}.
5
3 −7
7 7 10
105 5
−5
−2
−2
+
−
−
+
−
−
/
/
Ordne den Blattern konkrete Werte zu, z.B. x1 = 5, x2 = 3,
x3 = −2, x4 = −7, x5 = 7, x6 = 10, x7 = 5, x9 = −5.
Auswertungsprozedur ordnet jedem Knoten einen Wert zu.
Geeignete Reihenfolge: Postorder-Durchlauf.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 61
![Page 64: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/64.jpg)
Beispiel : Arithmetischer Ausdruck als BaumD = {+,−, ·, /} und Z = {x1, x2, x3, . . .}.
���
���
����
����
��������
���
���
������
������
��������
���
���
����
������
������
���
���
10
9
8
7
6
5
4
32
1
11
5
3 −7
7 7 10
105 5
−5
−2
−2
−5
−8
−3
40
70
10
−30
−9
2−7
−21+
−
−
+
−
−
/
/
Ordne den Blattern konkrete Werte zu, z.B. x1 = 5, x2 = 3,
x3 = −2, x4 = −7, x5 = 7, x6 = 10, x7 = 5, x9 = −5.
Auswertungsprozedur ordnet jedem Knoten einen Wert zu.
Geeignete Reihenfolge: Postorder-Durchlauf. (Rote Kreise.)
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 61
![Page 65: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/65.jpg)
Auch moglich: Kombi-Durchlauf:
falls T = (z):
e-visit(z) ;
falls T = (T1, x, T2):
preord-i-visit(x) ;
Kombi-Durchlauf durch T1;
inord-i-visit(x) ;
Kombi-Durchlauf durch T2;
postord-i-visit(x) ;
Ermoglicht Datentransport von der Wurzel nach unten in den
Baum hinein und wieder zuruck.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 62
![Page 66: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/66.jpg)
Kombi-Durchlauf durch T
���� ����
����
����
��������
��������
����
��������
��������
����
����
��
��
��������
����
����
��
��������
����
��
����
��
��
��
����
��������
����
����
��
��������
��������
������
29
31 1
3
7
2317
1337
b
z
u
r
d
a
b
c
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 63
![Page 67: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/67.jpg)
Beispiel fur Anwendung eines Kombi-Durchlaufs:
Generierung einer String-Darstellung eines Binarbaums.
Zeichen werden sequenziell in die Ausgabe geschrieben.
e-visit(z): Schreibe”(z)“.
preord-i-visit(x): Schreibe”(“.
inord-i-visit(x): Schreibe”, x,“.
postord-i-visit(x): Schreibe”)“.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 64
![Page 68: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/68.jpg)
Zeitanalyse fur Durchlauf
Die Baumdurchlaufe konnen mittels rekursiver Prozeduren
implementiert werden.
Beispiel : Inorder-Durchlauf. Prozedur: inorder(T)
Angewendet auf einen Baum T mit n inneren Knoten.
Fur jeden inneren und außeren Knoten wird die Prozedur inorder(.)
einmal aufgerufen, insgesamt (2n+ 1)-mal.
Kosten pro Aufruf:O(1) plus Kosten fur i-visit/e-visit-Operation.
Insgesamt: (2n + 1) · (O(1) + Cvisit), wo Cvisit eine Schranke fur die
Kosten der visit-Operationen ist.
Fazit: Baumdurchlaufe haben lineare Laufzeit.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 65
![Page 69: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/69.jpg)
Levelorder-Durchlauf
0:
1:
2:
3:
c
a
a
e d
c
d
c
db f
Wunschausgabe: a cd acc edbdf
”zeilenweise von links nach rechts“
Benutze Queue Q, die Zeiger/Referenzen auf Binarbaum-
knoten speichern kann.
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 66
![Page 70: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/70.jpg)
Prozedur Leveldurchlauf (leere außere Knoten)Eingabe: v: node; // Wurzel(1) Q: Queue fur node;(2) count ← 0;(3) if v <> NIL then // entdecke v
(4) count++; v.lnum ← count;(5) v.level ← 0; enqueue(v);(6) while not Q.isempty repeat(7) w← Q.first; Q.dequeue;(8) visit(w); // bearbeite w
(9) p← w.leftchild;(10) if p <> NIL then(11) count++; p.lnum ← count; // entdecke p
(12) p.level ← w.level + 1; enqueue(p);(13) p← w.rightchild;(14) if p <> NIL then(15) count++; p.lnum ← count; // entdecke p
(16) p.level ← w.level + 1; enqueue(p);
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 67
![Page 71: Algorithmen und Datenstrukturen...d = rab. (Dadurch ist ein eindeutiger Weg von w zur Wurzel festgelegt. Jeder Knoten des Bin arbaums ist von der Wurzel aus erreichbar.) FG KTuEA,](https://reader033.vdokument.com/reader033/viewer/2022041617/5e3c3e931e173e0b073237e7/html5/thumbnails/71.jpg)
Behauptung 3.4.2”Lineare Zeit, Korrektheit“
(a) Levelorder-Durchlauf benotigt Zeit
n · tvisit +O(n), wobei tvisit die Zeit fur visit angibt.
(b) Der Levelorder-Durchlauf ordnet jedem
Binarbaumknoten v (in v.level) korrekt seine Tiefe zu.
Beweis: Man zeigt durch Induktion uber das Level von v:
Jeder innere Knoten v des Binarbaums wird genau einmal
in die Queue eingefugt, genau einmal entnommen und im
Schleifenrumpf (7)-(16) bearbeitet.
Dabei wird die korrekte Levelnummer vergeben.
Weil Queue-Operationen Zeit O(1) benotigen, ist der restliche
Zeitbedarf O(n). �
FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 3 68