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