71
SS17 Algorithmen und Datenstrukturen 3. Kapitel Bin ¨ arb ¨ aume Martin Dietzfelbinger April 2017 FG KTuEA, TU Ilmenau Algorithmen und Datenstrukturen – SS17 – Kapitel 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,

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

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,

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,

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,

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,

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,

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,

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,

”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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

(((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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

• 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,

• (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,

• 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,

• 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,

• 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,

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,

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,

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,

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,

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,

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,

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,

(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,

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,

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,

(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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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