\documentclass{bschlangaul-aufgabe}
\bLadePakete{baum,spalten}

\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 2-3-4-B-Baum und AVL-Baum},
  Thematik = {2-3-4-Baum},
  Referenz = 46115-2011-F.T1-A3,
  RelativerPfad = Examen/46115/2011/03/Thema-1/Aufgabe-3.tex,
  ZitatSchluessel = aud:pu:7,
  ZitatBeschreibung = {entnommen aus Algorithmen und Datenstrukturen, Übungsblatt 6, Universität Würzburg, Aufgabe 9},
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {B-Baum, AVL-Baum},
  EinzelpruefungsNr = 46115,
  Jahr = 2011,
  Monat = 03,
  ThemaNr = 1,
  AufgabeNr = 3,
}

\begin{enumerate}

%%
% (a)
%%

\item Fügen Sie in einen anfangs leeren 2-3-4-Baum (B-Baum der Ordnung
4)\footnote{ein Baum, für den folgendes gilt: Er besitzt in einem Knoten
max. 3 Schlüssel-Einträge und 4 Kindknoten und minimal einen Schlüssel
und 2 Nachfolger} der Reihe nach die folgenden Schlüssel ein:
\index{B-Baum}\index{AVL-Baum}
\footcite[entnommen aus Algorithmen und
Datenstrukturen, Übungsblatt 6, Universität Würzburg, Aufgabe 9]{aud:pu:7}
\index{B-Baum}

\bigskip

\centerline{$1$, $2$, $3$, $5$, $7$, $8$, $9$, $4$, $11$, $12$, $13$, $6$.}

\bigskip

Dokumentieren Sie die Zwischenschritte so,
dass die Entstehung des Baumes und nicht nur das Endergebnis
nachvollziehbar ist. \footcite[Staatsexamen Theoretische Informatik,
Algorithmen und Datenstrukturen, Realschulen, Frühjahr 2011, Thema 1
Aufgabe 3]{examen:46115:2011:03}

\begin{bAntwort}
\begin{multicols}{2}
\begin{enumerate}

%%
%
%%

\item 1, 2, 3 (Einfaches Einfügen):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
]
\node {1 \nodepart{two} 2 \nodepart{three} 3};
\end{tikzpicture}

%%
%
%%

\item 5 (Split):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
  level 1/.style={level distance=12mm,sibling distance=25mm},
]
\node {2} [->]
  child {node {1}}
  child {node {3 \nodepart{two} 5}}
;
\end{tikzpicture}

%%
%
%%

\item 7 (Einfaches Einfügen):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
  level 1/.style={level distance=12mm,sibling distance=25mm},
]
\node {2} [->]
  child {node {1}}
  child {node {3 \nodepart{two} 5 \nodepart{three} 7}}
;
\end{tikzpicture}

%%
%
%%

\item 8 (Split):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
  level 1/.style={level distance=12mm,sibling distance=15mm},
]
\node {2 \nodepart{two} 5} [->]
  child {node {1}}
  child {node {3}}
  child {node {7 \nodepart{two} 8}}
;
\end{tikzpicture}

%%
%
%%

\item 9, 4 (Einfaches Einfügen):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
  level 1/.style={level distance=12mm,sibling distance=15mm},
]
\node {2 \nodepart{two} 5} [->]
  child {node {1}}
  child {node {3 \nodepart{two} 4}}
  child {node {7 \nodepart{two} 8 \nodepart{three} 9}}
;
\end{tikzpicture}

%%
%
%%

\item 11 (Split):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
  level 1/.style={level distance=12mm,sibling distance=15mm},
]
\node {2 \nodepart{two} 5 \nodepart{three} 8} [->]
  child {node {1}}
  child {node {3 \nodepart{two} 4}}
  child {node {7}}
  child {node {9 \nodepart{two} 11}}
;
\end{tikzpicture}

%%
%
%%

\item 12 (Einfaches Einfügen):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
  level 1/.style={level distance=12mm,sibling distance=15mm},
]
\node {2 \nodepart{two} 5 \nodepart{three} 8} [->]
  child {node {1}}
  child {node {3 \nodepart{two} 4}}
  child {node {7}}
  child {node {9 \nodepart{two} 11 \nodepart{three} 12}}
;
\end{tikzpicture}

%%
%
%%

\item 13 (zwei Splits):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
  level 1/.style={level distance=12mm,sibling distance=31mm},
  level 2/.style={level distance=10mm,sibling distance=12mm},
]
\node {5} [->]
  child {node {2}
    child {node {1}}
    child {node {3 \nodepart{two} 4}}
  }
  child {node {8 \nodepart{two} 11}
    child {node {7}}
    child {node {9}}
    child {node {12 \nodepart{two} 13}}
  }
;
\end{tikzpicture}

%%
%
%%

\item 6 (Einfaches Einfügen):

\begin{tikzpicture}[
  scale=0.8,
  transform shape,
  b bbaum,
  level 1/.style={level distance=12mm,sibling distance=31mm},
  level 2/.style={level distance=15mm,sibling distance=12mm},
]
\node {5} [->]
  child {node {2}
    child {node {1}}
    child {node {3 \nodepart{two} 4}}
  }
  child {node {8 \nodepart{two} 11}
    child {node {6 \nodepart{two} 7}}
    child {node {9}}
    child {node {12 \nodepart{two} 13}}
  }
;
\end{tikzpicture}
\end{enumerate}
\end{multicols}
\end{bAntwort}

%%
% (b)
%%

\item Zeichnen Sie einen Rot-Schwarz-Baum oder einen AVL-Baum, der
dieselben Einträge enthält.
\index{AVL-Baum}

\begin{bAntwort}
\begin{bBaum}{Nach dem Einfügen von „1“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{1}; ]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „2“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{1};
  \edge[blank]; \node[blank]{};
  [.\node[label=0]{2}; ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „3“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+2]{1};
  \edge[blank]; \node[blank]{};
  [.\node[label=+1]{2};
    \edge[blank]; \node[blank]{};
    [.\node[label=0]{3}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach der Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{2};
  [.\node[label=0]{1}; ]
  [.\node[label=0]{3}; ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „5“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{2};
  [.\node[label=0]{1}; ]
  [.\node[label=+1]{3};
    \edge[blank]; \node[blank]{};
    [.\node[label=0]{5}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „7“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+2]{2};
  [.\node[label=0]{1}; ]
  [.\node[label=+2]{3};
    \edge[blank]; \node[blank]{};
    [.\node[label=+1]{5};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{7}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach der Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{2};
  [.\node[label=0]{1}; ]
  [.\node[label=0]{5};
    [.\node[label=0]{3}; ]
    [.\node[label=0]{7}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „8“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+2]{2};
  [.\node[label=0]{1}; ]
  [.\node[label=+1]{5};
    [.\node[label=0]{3}; ]
    [.\node[label=+1]{7};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{8}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach der Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{5};
  [.\node[label=0]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=0]{3}; ]
  ]
  [.\node[label=+1]{7};
    \edge[blank]; \node[blank]{};
    [.\node[label=0]{8}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „9“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{5};
  [.\node[label=0]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=0]{3}; ]
  ]
  [.\node[label=+2]{7};
    \edge[blank]; \node[blank]{};
    [.\node[label=+1]{8};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{9}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach der Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{5};
  [.\node[label=0]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=0]{3}; ]
  ]
  [.\node[label=0]{8};
    [.\node[label=0]{7}; ]
    [.\node[label=0]{9}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „4“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=-1]{5};
  [.\node[label=+1]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=+1]{3};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{4}; ]
    ]
  ]
  [.\node[label=0]{8};
    [.\node[label=0]{7}; ]
    [.\node[label=0]{9}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „11“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{5};
  [.\node[label=+1]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=+1]{3};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{4}; ]
    ]
  ]
  [.\node[label=+1]{8};
    [.\node[label=0]{7}; ]
    [.\node[label=+1]{9};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{11}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „12“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{5};
  [.\node[label=+1]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=+1]{3};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{4}; ]
    ]
  ]
  [.\node[label=+2]{8};
    [.\node[label=0]{7}; ]
    [.\node[label=+2]{9};
      \edge[blank]; \node[blank]{};
      [.\node[label=+1]{11};
        \edge[blank]; \node[blank]{};
        [.\node[label=0]{12}; ]
      ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach der Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{5};
  [.\node[label=+1]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=+1]{3};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{4}; ]
    ]
  ]
  [.\node[label=+1]{8};
    [.\node[label=0]{7}; ]
    [.\node[label=0]{11};
      [.\node[label=0]{9}; ]
      [.\node[label=0]{12}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „13“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{5};
  [.\node[label=+1]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=+1]{3};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{4}; ]
    ]
  ]
  [.\node[label=+2]{8};
    [.\node[label=0]{7}; ]
    [.\node[label=+1]{11};
      [.\node[label=0]{9}; ]
      [.\node[label=+1]{12};
        \edge[blank]; \node[blank]{};
        [.\node[label=0]{13}; ]
      ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach der Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{5};
  [.\node[label=+1]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=+1]{3};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{4}; ]
    ]
  ]
  [.\node[label=0]{11};
    [.\node[label=0]{8};
      [.\node[label=0]{7}; ]
      [.\node[label=0]{9}; ]
    ]
    [.\node[label=+1]{12};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{13}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Nach dem Einfügen von „6“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{5};
  [.\node[label=+1]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=+1]{3};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{4}; ]
    ]
  ]
  [.\node[label=-1]{11};
    [.\node[label=-1]{8};
      [.\node[label=-1]{7};
        [.\node[label=0]{6}; ]
        \edge[blank]; \node[blank]{};
      ]
      [.\node[label=0]{9}; ]
    ]
    [.\node[label=+1]{12};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{13}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}
\end{bAntwort}

%%
% (c)
%%

\item Geben Sie eine möglichst gute untere Schranke (in
$\Omega$-Notation) für die Anzahl der Schlüssel in einem 2-3-4-Baum der
Höhe $h$ an.

Hinweis: Überlegen Sie sich, wie ein 2-3-4-Baum mit Höhe $h$ und
möglichst wenigen Schlüsseln aussieht.

\begin{bAntwort}
Ein 2-3-4-Baum mit möglichst wenigen Schlüsseln sieht aus wie ein
Binärbaum:

\begin{itemize}
\item Ein Baum der Höhe $1$ hat $1$ Schlüssel.
\item Ein Baum der Höhe $2$ hat $3$ Schlüssel.
\item Ein Baum der Höhe $3$ hat $7$ Schlüssel.
\item $\cdots$
\item Ein Baum der Höhe $h$ hat $2^h - 1$ Schlüssel.
\end{itemize}

Also liegt die Untergrenze für die Anzahl der Schlüssel in
$\Omega(2^h)$.
\end{bAntwort}

%%
% (d)
%%

\item Geben Sie eine möglichst gute obere Schranke (in
$\mathcal{O}$-Notation) für die Anzahl der Schlüssel in einem 2-3-4-Baum
der Höhe h an.

\begin{bAntwort}
Ein 2-3-4-Baum mit möglichst vielen Schlüsseln hat in jedem Knoten drei
Schlüssel. Und jeder Knoten, der kein Blatt ist, hat vier Kinder:

\begin{itemize}
\item Ein Baum der Höhe $1$ hat $3$ Schlüssel.
\item Ein Baum der Höhe $2$ hat $15$ Schlüssel.
\item Ein Baum der Höhe $3$ hat $63$ Schlüssel.
\item $\cdots$
\item Ein Baum der Höhe $h$ hat $4^h - 1$ Schlüssel.
\end{itemize}

Also liegt die Obergrenze für die Anzahl der Schlüssel in
$\mathcal{O}(4^h)$.
\end{bAntwort}

\end{enumerate}
\end{document}
