\documentclass{bschlangaul-aufgabe} \bLadePakete{baum} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 8}, Thematik = {Binärbaum, Halde, AVL}, Referenz = 66115-2017-H.T2-A8, RelativerPfad = Examen/66115/2017/09/Thema-2/Aufgabe-8.tex, ZitatSchluessel = examen:66115:2017:09, BearbeitungsStand = mit Lösung, Korrektheit = korrekt und überprüft, Ueberprueft = {mit einer Dozentenlösung abgeglichen}, Stichwoerter = {AVL-Baum, Halde (Heap), Binärbaum}, EinzelpruefungsNr = 66115, Jahr = 2017, Monat = 09, ThemaNr = 2, AufgabeNr = 8, } \begin{enumerate} %% % (a) %% \item Fügen\index{AVL-Baum} \index{Halde (Heap)} \footcite{examen:66115:2017:09} Sie die Zahlen $13$, $12$, $42$, $3$, $11$ in der gegebenen Reihenfolge in einen zunächst leeren binären Suchbaum mit aufsteigender Sortierung ein. Stellen Sie nur das Endergebnis dar.\index{Binärbaum} \footcite[Aufgabe 2]{aud:ab:5} \begin{bAntwort} \begin{center} \begin{tikzpicture}[b binaer baum] \Tree [.13 [.12 [.3 \edge[blank]; \node[blank]{}; [.11 ] ] \edge[blank]; \node[blank]{}; ] [.42 ] ] \end{tikzpicture} \end{center} \end{bAntwort} %% % (b) %% \item Löschen Sie den Wurzelknoten mit Wert $42$ aus dem folgenden \emph{binären} Suchbaum mit aufsteigender Sortierung und ersetzen Sie ihn dabei durch einen geeigneten Wert aus dem \emph{rechten} Teilbaum. Lassen Sie möglichst viele Teilbäume unverändert und erhalten Sie die Suchbaumeigenschaft. \footcite[Seite 12]{examen:66115:2017:09} \begin{center} \begin{tikzpicture}[b binaer baum] \Tree [.42 [.13 \edge[blank]; \node[blank]{}; [.28 ] ] [.66 [.50 \edge[blank]; \node[blank]{}; [.61 [.55 ] \edge[blank]; \node[blank]{}; ] ] [.99 ] ] ] \end{tikzpicture} \end{center} % 42 13 66 28 50 99 61 55 lösche 50 \begin{bAntwort} \begin{minipage}{0.5\linewidth} \begin{tikzpicture}[b binaer baum] \Tree [.\node(root){\textbf{42}}; [.13 \edge[blank]; \node[blank]{}; [.28 ] ] [.\node(66){66}; [.\node(replacement){\textbf{50}}; \edge[blank]; \node[blank]{}; [.\node(61){61}; [.55 ] \edge[blank]; \node[blank]{}; ] ] [.99 ] ] ] \draw[dotted,->] (replacement) -- (root); \draw[dotted,<-] (66) -- (61); \end{tikzpicture} \end{minipage} \begin{minipage}{0.5\linewidth} \begin{tikzpicture}[b binaer baum] \Tree [.\textbf{50} [.13 \edge[blank]; \node[blank]{}; [.28 ] ] [.66 [.61 [.55 ] \edge[blank]; \node[blank]{}; ] [.99 ] ] ] \end{tikzpicture} \end{minipage} \end{bAntwort} %% % (c) %% \item Fügen Sie einen neuen Knoten mit dem Wert $13$ in die folgende Min-Halde ein und stellen Sie anschließend die Halden-Eigenschaft vom neuen Blatt aus beginnend wieder her, wobei möglichst viele Knoten der Halde unverändert bleiben und die Halde zu jedem Zeitpunkt links-vollständig sein soll. Geben Sie nur das Endergebnis an. \begin{center} \begin{tikzpicture}[b binaer baum] \Tree [.3 [.19 [.28 [.42 ] \edge[blank]; \node[blank]{}; ] [.24 ] ] [.7 [.11 ] [.12 ] ] ] \end{tikzpicture} \end{center} \begin{bAntwort} \begin{bBaum}{Nach dem Einfügen von „13“} \begin{tikzpicture}[b binaer baum] \Tree [.3 [.19 [.28 [.42 ] [.13 ] ] [.24 ] ] [.7 [.11 ] [.12 ] ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Vertauschen von „13“ und „28“} \begin{tikzpicture}[b binaer baum] \Tree [.3 [.19 [.13 [.42 ] [.28 ] ] [.24 ] ] [.7 [.11 ] [.12 ] ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Vertauschen von „13“ und „19“} \begin{tikzpicture}[b binaer baum] \Tree [.3 [.13 [.19 [.42 ] [.28 ] ] [.24 ] ] [.7 [.11 ] [.12 ] ] ] \end{tikzpicture} \end{bBaum} \end{bAntwort} %% % (d) %% \item Geben Sie für die ursprüngliche Min-Halde aus Teilaufgabe c)(\dh ohne den neu eingefügten Knoten mit dem Wert $13$) die Feld-Einbettung (Array-Darstellung) an. \begin{bAntwort} \begin{tabular}{llllllll} \bf{0} & \bf{1} & \bf{2} & \bf{3} & \bf{4} & \bf{5} & \bf{6} & \bf{7} \\ \hline 3 & 19 & 7 & 28 & 24 & 11 & 12 & 42 \\ \end{tabular} \end{bAntwort} %% % (e) %% \item Löschen Sie den Wurzelknoten mit Wert 42 aus der folgenden Max-Halde und stellen Sie anschließend die Halden-Eigenschaft ausgehend von einer neuen Wurzel wieder her, wobei möglichst viele Knoten der Halde unverändert bleiben und die Halde zu jedem Zeitpunkt links-vollständig sein soll. Geben Sie nur das Endergebnis an. \begin{center} \begin{tikzpicture}[b binaer baum] \Tree [.42 [.24 [.21 [.13 ] \edge[blank]; \node[blank]{}; ] [.19 ] ] [.28 [.3 ] [.7 ] ] ] \end{tikzpicture} \end{center} \begin{bAntwort} \begin{bBaum}{Nach dem Ersetzen von „42“ mit „13“} \begin{tikzpicture}[b binaer baum] \Tree [.13 [.24 [.21 ] [.19 ] ] [.28 [.3 ] [.7 ] ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Vertauschen von „13“ und „28“} \begin{tikzpicture}[b binaer baum] \Tree [.28 [.24 [.21 ] [.19 ] ] [.13 [.3 ] [.7 ] ] ] \end{tikzpicture} \end{bBaum} \end{bAntwort} %% % (f) %% \item Fügen Sie in jeden der folgenden AVL-Bäume mit aufsteigender Sortierung jeweils einen neuen Knoten mit dem Wert 13 ein und führen Sie anschließend bei Bedarf die erforderliche(n) Rotation(en) durch. Zeichnen Sie den Baum vor und nach den Rotationen. \begin{enumerate} %% % i) %% \item AVL-Baum A \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=-1]{24}; [.\node[label=0]{11}; [.\node[label=0]{3}; ] [.\node[label=0]{12}; ] ] [.\node[label=0]{28}; ] ] \end{tikzpicture} \begin{bAntwort} \begin{bBaum}{Nach dem Einfügen von „13“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=-2]{24}; [.\node[label=+1]{11}; [.\node[label=0]{3}; ] [.\node[label=+1]{12}; \edge[blank]; \node[blank]{}; [.\node[label=0]{13}; ] ] ] [.\node[label=0]{28}; ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach der Linksrotation} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=-2]{24}; [.\node[label=-1]{12}; [.\node[label=-1]{11}; [.\node[label=0]{3}; ] \edge[blank]; \node[blank]{}; ] [.\node[label=0]{13}; ] ] [.\node[label=0]{28}; ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach der Rechtsrotation} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=0]{12}; [.\node[label=-1]{11}; [.\node[label=0]{3}; ] \edge[blank]; \node[blank]{}; ] [.\node[label=0]{24}; [.\node[label=0]{13}; ] [.\node[label=0]{28}; ] ] ] \end{tikzpicture} \end{bBaum} \end{bAntwort} %% % ii) %% \item AVL-Baum B \begin{center} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=-1]{24}; [.\node[label=0]{19}; [.\node[label=0]{12}; ] [.\node[label=0]{21}; ] ] [.\node[label=0]{28}; ] ] \end{tikzpicture} \end{center} \begin{bAntwort} \begin{bBaum}{Nach dem Einfügen von „13“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=-2]{24}; [.\node[label=-1]{19}; [.\node[label=+1]{12}; \edge[blank]; \node[blank]{}; [.\node[label=0]{13}; ] ] [.\node[label=0]{21}; ] ] [.\node[label=0]{28}; ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach der Rechtsrotation} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=0]{19}; [.\node[label=+1]{12}; \edge[blank]; \node[blank]{}; [.\node[label=0]{13}; ] ] [.\node[label=0]{24}; [.\node[label=0]{21}; ] [.\node[label=0]{28}; ] ] ] \end{tikzpicture} \end{bBaum} \end{bAntwort} \end{enumerate} \end{enumerate} \end{document}