91 lines
2.2 KiB
Markdown
91 lines
2.2 KiB
Markdown
|
---
|
||
|
title: Wurzelbäume
|
||
|
date: 2018-11-14
|
||
|
---
|
||
|
|
||
|
**Idee**: wir zeichnen einen Knoten $v \in V$ für einen Baum $T=(V,E)$ aus,
|
||
|
nennen ihn Wurzel.
|
||
|
|
||
|
![Wurzelbaum](20181114_4-wb.png)
|
||
|
|
||
|
* $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](20181114_4-bb.png) 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](20181114_4-bsb.png)
|
||
|
|
||
|
|
||
|
# 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"
|