\documentclass{bschlangaul-aufgabe}
\bLadePakete{baum}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Übungsaufgabe B-Bäume},
  Thematik = {B-Baum m=2},
  Referenz = 66112-2005-H.T2-A6,
  RelativerPfad = Examen/66112/2005/09/Thema-2/Aufgabe-6.tex,
  ZitatSchluessel = 66112:2005:09,
  ZitatBeschreibung = {Thema 2 Aufgabe 6
(Adaptiert)},
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {B-Baum},
  EinzelpruefungsNr = 66112,
  Jahr = 2005,
  Monat = 09,
  ThemaNr = 2,
  AufgabeNr = 6,
}

\begin{enumerate}

%%
% a)
%%

\item Erzeugen\index{B-Baum} \footcite[Thema 2 Aufgabe 6
(Adaptiert)]{66112:2005:09} Sie aus der gegebenen Folge einen B-Baum der
Ordnung $m=2$:\footcite[Seite 34-37(PDF 28-31)]{aud:fs:5}

$22,10,19,20,1,13,11,12,7,8,5,42,33,21,52,48,50$

Fügen Sie dazu die einzelnen Elemente in gegebener Reihenfolge in einen
anfangs leeren B-Baum ein. Stellen Sie für jeden Wert die entsprechenden
Zwischenergebnisse und die angewendeten Operationen als Bäume dar!

\begin{bAntwort}
\begin{itemize}

%%
%
%%

\item \fbox{+22} \fbox{+10} \fbox{+19} \fbox{+20} Einfügen der ersten
Zahlen bis zur kompletten Füllung der Wurzel:

\begin{tikzpicture}[b bbaum]
\node {10 \nodepart{two} 19 \nodepart{three} 20 \nodepart{four} 22};
\end{tikzpicture}

%%
%
%%

\item \fbox{+1} Einfügen der 1 führt zum Überlauf, deshalb Aufspaltung:

\begin{tikzpicture}[b bbaum]
\node {1 \nodepart{two} 10 \nodepart{three} 19 \nodepart{four} 20 \nodepart{five} 22};
\end{tikzpicture}

%%
%
%%

\item Übernahme des mittleren Elements (19) in die Wurzel:

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=15mm},
]
\node {19}[->]
  child{node {1 \nodepart{two} 10}}
  child{node {20 \nodepart{two} 22}}
;
\end{tikzpicture}

%%
%
%%

\item \fbox{+13} Einfügen der 13:

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=20mm},
]
\node {19}[->]
  child{node {1 \nodepart{two} 10 \nodepart{three} 11 \nodepart{four} 13}}
  child{node {20 \nodepart{two} 22}}
;
\end{tikzpicture}

%%
%
%%

\item \fbox{+12} Einfügen der 12 nicht möglich, also wieder Aufspaltung.
11 als mittleres Element wird nach oben geschrieben:

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=15mm},
]
\node {11 \nodepart{two} 19}[->]
  child{node {1 \nodepart{two} 10}}
  child{node {12 \nodepart{two} 13}}
  child{node {20 \nodepart{two} 22}}
;
\end{tikzpicture}

%%
%
%%

\item \fbox{+7} \fbox{+8} Einfügen von 7 und 8:

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=20mm},
]
\node {11 \nodepart{two} 19}[->]
  child{node {1 \nodepart{two} 7 \nodepart{three} 8 \nodepart{four} 10}}
  child{node {12 \nodepart{two} 13}}
  child{node {20 \nodepart{two} 22}}
;
\end{tikzpicture}

%%
%
%%

\item \fbox{+5} Einfügen von 5 nicht möglich, deshalb Aufspaltung, 7 als
mittleres Element wird nach oben geschrieben:

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=15mm},
]
\node {7 \nodepart{two} 11 \nodepart{three} 19}[->]
  child{node {1 \nodepart{two} 5}}
  child{node {8 \nodepart{two} 10}}
  child{node {12 \nodepart{two} 13}}
  child{node {20 \nodepart{two} 22}}
;
\end{tikzpicture}

%%
%
%%

\item \fbox{+42} \fbox{+33} Einfügen von 42 und 33:

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=20mm},
]
\node {7 \nodepart{two} 11 \nodepart{three} 19}[->]
  child{node {1 \nodepart{two} 5}}
  child{node {8 \nodepart{two} 10}}
  child{node {12 \nodepart{two} 13}}
  child{node {20 \nodepart{two} 22 \nodepart{three} 33 \nodepart{four} 42}}
;
\end{tikzpicture}

%%
%
%%

\item \fbox{+21} Einfügen von 21 nicht möglich, also Aufspaltung, 22
nach oben schieben

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=15mm},
]
\node {7 \nodepart{two} 11 \nodepart{three} 19 \nodepart{four} 22}[->]
  child{node {1 \nodepart{two} 5}}
  child{node {8 \nodepart{two} 10}}
  child{node {12 \nodepart{two} 13}}
  child{node {20 \nodepart{two} 21}}
  child{node {33 \nodepart{two} 42}}
;
\end{tikzpicture}

\item \fbox{+52} \fbox{+48} Einfügen von 52 und 48

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=20mm},
]
\node {7 \nodepart{two} 11 \nodepart{three} 19 \nodepart{four} 22}[->]
  child{node {1 \nodepart{two} 5}}
  child{node {8 \nodepart{two} 10}}
  child{node {12 \nodepart{two} 13}}
  child{node {20 \nodepart{two} 21}}
  child{node {33 \nodepart{two} 42 \nodepart{three} 48 \nodepart{four} 52}}
;
\end{tikzpicture}

\item \fbox{+50} Einfügen von 50 nicht möglich, daher splitten und 48 eine Ebene
nach oben schieben

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={sibling distance=15mm},
]
\node {7 \nodepart{two} 11 \nodepart{three} 19 \nodepart{four} 22 \nodepart{five} 48}[->]
  child{node {1 \nodepart{two} 5}}
  child{node {8 \nodepart{two} 10}}
  child{node {12 \nodepart{two} 13}}
  child{node {20 \nodepart{two} 21}}
  child{node {33 \nodepart{two} 42}}
  child{node {48 \nodepart{two} 52}}
;
\end{tikzpicture}

\item Einfügen von 48 oben nicht möglich, da Knoten ebenfalls voll! ->
weiterer Splitt notwendig, der neue Ebene erzeugt!

\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={level distance=5mm,sibling distance=60mm},
  level 2/.append style={sibling distance=20mm}
]
\node{19}[->]
  child{node{7 \nodepart{two} 11}
      child{node {1 \nodepart{two} 5}}
      child{node {8 \nodepart{two} 10}}
      child{node {12 \nodepart{two} 13}}
  }
  child{node{22 \nodepart{two} 48}
    child{node {20 \nodepart{two} 21}}
    child{node {33 \nodepart{two} 42}}
    child{node {48 \nodepart{two} 52}}
  }
;
\end{tikzpicture}
\end{itemize}
\end{bAntwort}

%%
% b)
%%

\item In dem Ergebnisbaum suchen wir nun den Wert 17. Stellen Sie den
Ablauf des Suchalgorithmus an einer Zeichnung graphisch dar!

\begin{bAntwort}
\begin{tikzpicture}[
  b bbaum,
  level 1/.append style={level distance=5mm,sibling distance=60mm},
  level 2/.append style={sibling distance=20mm}
]
\node[name=eins]{19}[->]
  child{node[name=zwei]{7 \nodepart{two} 11}
      child{node {1 \nodepart{two} 5}}
      child{node {8 \nodepart{two} 10}}
      child{node[name=drei]{12 \nodepart{two} 13}}
  }
  child{node{22 \nodepart{two} 48}
    child{node {20 \nodepart{two} 21}}
    child{node {33 \nodepart{two} 42}}
    child{node {48 \nodepart{two} 52}}
  }
;
\end{tikzpicture}
\end{bAntwort}
\end{enumerate}
\end{document}
