notes/school/di-ma/20181114_4-wurzelbaeume.md

91 lines
2.2 KiB
Markdown
Raw Permalink Normal View History

2019-01-28 20:58:59 +01:00
---
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"