\documentclass{bschlangaul-aufgabe}
\bLadePakete{baum,spalten}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 8},
  Thematik = {AVL-Baum 5,14,28,10,3,12,13},
  Referenz = 66115-2018-F.T2-A8,
  RelativerPfad = Examen/66115/2018/03/Thema-2/Aufgabe-8.tex,
  ZitatSchluessel = examen:66115:2018:03,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {AVL-Baum},
  EinzelpruefungsNr = 66115,
  Jahr = 2018,
  Monat = 03,
  ThemaNr = 2,
  AufgabeNr = 8,
}

Bearbeiten Sie folgende Aufgaben zu AVL-Suchbäumen. Geben Sie jeweils
bei jeder einzelnen Operation zum Einfügen, Löschen, sowie jeder
elementaren Operation zum Wiederherstellen der AVL-Baumeigenschaften den
entstehenden Baum als Baumzeichnung an. Geben Sie zur Darstellung der
elementaren Operation auch vorübergehend ungültige AVL-Bäume an und
stellen Sie Doppelrotationen in zwei Schritten dar. Dabei sollen die
durchgeführten Operationen klar gekennzeichnet sein und die Baumknoten
immer mit aktuellen Balancewerten versehen sein.
\index{AVL-Baum}
\footcite{examen:66115:2018:03}

\begin{enumerate}
%%
% a)
%%

\item Fügen Sie (manuell) nacheinander die Zahlen 5, 14, 28, 10, 3, 12,
13 in einen anfangs leeren AVL-Baum ein.

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

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

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

\begin{bBaum}{Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{14};
  [.\node[label=0]{5}; ]
  [.\node[label=0]{28}; ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Einfügen von „10“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=-1]{14};
  [.\node[label=+1]{5};
    \edge[blank]; \node[blank]{};
    [.\node[label=0]{10}; ]
  ]
  [.\node[label=0]{28}; ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Einfügen von „3“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=-1]{14};
  [.\node[label=0]{5};
    [.\node[label=0]{3}; ]
    [.\node[label=0]{10}; ]
  ]
  [.\node[label=0]{28}; ]
]
\end{tikzpicture}
\end{bBaum}

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

\begin{bBaum}{Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=-2]{14};
  [.\node[label=-1]{10};
    [.\node[label=-1]{5};
      [.\node[label=0]{3}; ]
      \edge[blank]; \node[blank]{};
    ]
    [.\node[label=0]{12}; ]
  ]
  [.\node[label=0]{28}; ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Rechtsrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{10};
  [.\node[label=-1]{5};
    [.\node[label=0]{3}; ]
    \edge[blank]; \node[blank]{};
  ]
  [.\node[label=0]{14};
    [.\node[label=0]{12}; ]
    [.\node[label=0]{28}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Einfügen von „13“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{10};
  [.\node[label=-1]{5};
    [.\node[label=0]{3}; ]
    \edge[blank]; \node[blank]{};
  ]
  [.\node[label=-1]{14};
    [.\node[label=+1]{12};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{13}; ]
    ]
    [.\node[label=0]{28}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}
\end{multicols}
\end{bAntwort}

%%
% b)
%%

\item Gegeben sei folgender AVL-Baum. Löschen Sie nacheinander die
Knoten 1 und 23. Bei Wahlmöglichkeiten nehmen Sie jeweils den kleineren
Wert anstatt eines größeren.

\begin{bProjektSprache}{Baum}
baum avl (
  setze: 7 2 23 1 4 10 25 6 17 24 26 30;
  drucke;
)
\end{bProjektSprache}

\begin{center}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{7};
  [.\node[label=+1]{2};
    [.\node[label=0]{1}; ]
    [.\node[label=+1]{4};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{6}; ]
    ]
  ]
  [.\node[label=+1]{23};
    [.\node[label=+1]{10};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{17}; ]
    ]
    [.\node[label=+1]{25};
      [.\node[label=0]{24}; ]
      [.\node[label=+1]{26};
        \edge[blank]; \node[blank]{};
        [.\node[label=0]{30}; ]
      ]
    ]
  ]
]
\end{tikzpicture}
\end{center}

\begin{bAntwort}
\begin{bBaum}{Löschen von „1“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+1]{7};
  [.\node[label=+2]{2};
    \edge[blank]; \node[blank]{};
    [.\node[label=+1]{4};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{6}; ]
    ]
  ]
  [.\node[label=+1]{23};
    [.\node[label=+1]{10};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{17}; ]
    ]
    [.\node[label=+1]{25};
      [.\node[label=0]{24}; ]
      [.\node[label=+1]{26};
        \edge[blank]; \node[blank]{};
        [.\node[label=0]{30}; ]
      ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=+2]{7};
  [.\node[label=0]{4};
    [.\node[label=0]{2}; ]
    [.\node[label=0]{6}; ]
  ]
  [.\node[label=+1]{23};
    [.\node[label=+1]{10};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{17}; ]
    ]
    [.\node[label=+1]{25};
      [.\node[label=0]{24}; ]
      [.\node[label=+1]{26};
        \edge[blank]; \node[blank]{};
        [.\node[label=0]{30}; ]
      ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{23};
  [.\node[label=0]{7};
    [.\node[label=0]{4};
      [.\node[label=0]{2}; ]
      [.\node[label=0]{6}; ]
    ]
    [.\node[label=+1]{10};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{17}; ]
    ]
  ]
  [.\node[label=+1]{25};
    [.\node[label=0]{24}; ]
    [.\node[label=+1]{26};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{30}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Löschen von „23“}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=0]{24};
  [.\node[label=0]{7};
    [.\node[label=0]{4};
      [.\node[label=0]{2}; ]
      [.\node[label=0]{6}; ]
    ]
    [.\node[label=+1]{10};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{17}; ]
    ]
  ]
  [.\node[label=+2]{25};
    \edge[blank]; \node[blank]{};
    [.\node[label=+1]{26};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{30}; ]
    ]
  ]
]
\end{tikzpicture}
\end{bBaum}

\begin{bBaum}{Linksrotation}
\begin{tikzpicture}[b binaer baum]
\Tree
[.\node[label=-1]{24};
  [.\node[label=0]{7};
    [.\node[label=0]{4};
      [.\node[label=0]{2}; ]
      [.\node[label=0]{6}; ]
    ]
    [.\node[label=+1]{10};
      \edge[blank]; \node[blank]{};
      [.\node[label=0]{17}; ]
    ]
  ]
  [.\node[label=0]{26};
    [.\node[label=0]{25}; ]
    [.\node[label=0]{30}; ]
  ]
]
\end{tikzpicture}
\end{bBaum}
\end{bAntwort}

\end{enumerate}
\end{document}
