--- 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"