notes/school/di-ma/20181114_4-wurzelbaeume.md
Valentin Brandl b62a7e60e4
Some checks failed
the build failed
Add dima notes
2019-01-28 20:58:59 +01:00

2.2 KiB

title date
Wurzelbäume 2018-11-14

Idee: wir zeichnen einen Knoten v \in V für einen Baum T=(V,E) aus, nennen ihn Wurzel.

Wurzelbaum

  • 5: Wurzel
  • 4: Kindknoten
  • 2, 3: Geschwister
  • 4, 1, 2, 3: Teilbaum
  • H(T) = 3

Wurzelbäume "wachsen" nach unten.

Definition (Wurzelbaum)

Sei T=(V,E) ein Baum. Wir definieren für v \in V den in v gewurzelten Baum T_v mit

i) v heißt Wurzel i) Alle u \in \Gamma(v) heißen Kindknoten von v, v heißt Elternknoten von $u$ i) Kindknoten mit gleichen Elternknoten heißen Geschwister i) Sei u Kindknoten von v. Dann ist u die Wurzel eines Teilbaums mit Kindknoten $\Gamma(u) \setminus {v}$ i) Für u \in V mit einem $u$-$v$-Pfad der Länge k sie die $Tiefe(u) = k$ i) Die Höhe eines Wurzelbaums ist definiert als $H(T_v) = \max\limits_{u \in V} { Tiefe(u) }$


\tag*{$\Box$}

Definition (Binärbaum)

Sei T_v=(V,E) ein in v gewurzelter Baum.

i) T_v heißt Binärbaum, falls jeder Knoten maximal 2 Kindknoten hat. i) T_v heißt vollständiger Binärbaum, falls jeder Knoten, der kein Blatt ist, genau 2 Kindknoten hat und alle Blätter gleiche Tiefe haben.

Beispiel:

i) oben ist Binärbaum, aber nicht vollständig

i) Binärbaum Vollständiger Binärbaum der Höhe 2

Bemerkung: Ein vollständiger Binärbaum der Höhe n hat t Knoten mit $t = 2^{n+1} - 1 = \sum\limits_{i=0}^n 2^i$

Binärbäume können beim Suchen von Elementen in einer endlichen Menge genutzt werden.

Definition (Binärer Suchbaum)

Sei T_v=(V,E) mit V \subseteq \mathbb{Z} ein binärer Wurzelbaum mit Wurzel v. T_v heißt binärer Suchbaum, falls für alle u \in V gilt

i) u_l \leq u, \forall u_l \in V im linken Teilbaum i) u_r \geq u, \forall u_r \in V im rechten Teilbaum


\tag*{$\Box$}

Beispiel: Binärer Suchbaum

Algorithmus (Binäre Suche)

Eingabe: Suchbaum T_v=(V,E) und Element u \in \mathbb{Z}

i) setze $w = v$ i) while (w $\neq$u) und w kein Blatt a) falls u < w: setze w \leftarrow linker Kindknoten von $w$ a) falls u > w: setze w \leftarrow rechter Kindknoten von w

Ausgabe: falls w = u dann "u gefunden", sonst "u nicht gefunden"