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.
5
: Wurzel4
: Kindknoten2
,3
: Geschwister4, 1, 2, 3
: TeilbaumH(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) 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$}
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"