\documentclass{bschlangaul-aufgabe} \bLadePakete{baum} \begin{document} \bAufgabenMetadaten{ Titel = {Aufgabe 4}, Thematik = {AVL-Baum, Dijkstra, Tiefensuche}, Referenz = 66115-2006-H.T1-A4, RelativerPfad = Examen/66115/2006/09/Thema-1/Aufgabe-4.tex, ZitatSchluessel = examen:66115:2006:09, BearbeitungsStand = mit Lösung, Korrektheit = unbekannt, Ueberprueft = {unbekannt}, Stichwoerter = {AVL-Baum, Algorithmus von Dijkstra, Tiefensuche, Quicksort}, EinzelpruefungsNr = 66115, Jahr = 2006, Monat = 09, ThemaNr = 1, AufgabeNr = 4, } \begin{enumerate} \item Gegeben sei die folgende Folge ganzer Zahlen: $6, 13, 4, 8, 11, 9, 10$. \index{AVL-Baum} \footcite{examen:66115:2006:09} % bschlangaul-werkzeug.java baum --avl 6 13 4 8 11 9 10 \begin{enumerate} \item Fügen Sie obige Zahlen der Reihe nach in einen anfangs leeren AVL-Baum ein und stellen Sie den Baum nach jedem Einfügeschritt dar! \begin{bAntwort} \begin{bBaum}{Nach dem Einfügen von „6“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=0]{6}; ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Einfügen von „13“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=+1]{6}; \edge[blank]; \node[blank]{}; [.\node[label=0]{13}; ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Einfügen von „4“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=0]{6}; [.\node[label=0]{4}; ] [.\node[label=0]{13}; ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Einfügen von „8“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=+1]{6}; [.\node[label=0]{4}; ] [.\node[label=-1]{13}; [.\node[label=0]{8}; ] \edge[blank]; \node[blank]{}; ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Einfügen von „11“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=+2]{6}; [.\node[label=0]{4}; ] [.\node[label=-2]{13}; [.\node[label=+1]{8}; \edge[blank]; \node[blank]{}; [.\node[label=0]{11}; ] ] \edge[blank]; \node[blank]{}; ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach der Linksrotation} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=+2]{6}; [.\node[label=0]{4}; ] [.\node[label=-2]{13}; [.\node[label=-1]{11}; [.\node[label=0]{8}; ] \edge[blank]; \node[blank]{}; ] \edge[blank]; \node[blank]{}; ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach der Rechtsrotation} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=+1]{6}; [.\node[label=0]{4}; ] [.\node[label=0]{11}; [.\node[label=0]{8}; ] [.\node[label=0]{13}; ] ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Einfügen von „9“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=+2]{6}; [.\node[label=0]{4}; ] [.\node[label=-1]{11}; [.\node[label=+1]{8}; \edge[blank]; \node[blank]{}; [.\node[label=0]{9}; ] ] [.\node[label=0]{13}; ] ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach der Rechtsrotation} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=+2]{6}; [.\node[label=0]{4}; ] [.\node[label=+2]{8}; \edge[blank]; \node[blank]{}; [.\node[label=0]{11}; [.\node[label=0]{9}; ] [.\node[label=0]{13}; ] ] ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach der Linksrotation} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=0]{8}; [.\node[label=-1]{6}; [.\node[label=0]{4}; ] \edge[blank]; \node[blank]{}; ] [.\node[label=0]{11}; [.\node[label=0]{9}; ] [.\node[label=0]{13}; ] ] ] \end{tikzpicture} \end{bBaum} \begin{bBaum}{Nach dem Einfügen von „10“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=+1]{8}; [.\node[label=-1]{6}; [.\node[label=0]{4}; ] \edge[blank]; \node[blank]{}; ] [.\node[label=-1]{11}; [.\node[label=+1]{9}; \edge[blank]; \node[blank]{}; [.\node[label=0]{10}; ] ] [.\node[label=0]{13}; ] ] ] \end{tikzpicture} \end{bBaum} \end{bAntwort} \item Löschen Sie das Wurzelelement des entstandenen AVL-Baums und stellen Sie die AVL-Eigenschaft wieder her! \begin{bAntwort} \begin{bBaum}{Nach dem Löschen von „8“} \begin{tikzpicture}[b binaer baum] \Tree [.\node[label=0]{9}; [.\node[label=-1]{6}; [.\node[label=0]{4}; ] \edge[blank]; \node[blank]{}; ] [.\node[label=0]{11}; [.\node[label=0]{10}; ] [.\node[label=0]{13}; ] ] ] \end{tikzpicture} \end{bBaum} \end{bAntwort} \end{enumerate} %% % b) %% \item Gegeben sei der folgende gerichtete und gewichtete Graph: \begin{itemize} \item Bestimmen Sie mit Hilfe des Algorithmus von Dijkstra die kürzesten Wege vom Knoten A zu allen anderen Knoten! Geben Sie dabei nach jedem Verarbeitungsschritt den Zustand der Hilfsdatenstruktur an! \index{Algorithmus von Dijkstra} \item Skizzieren Sie einen Algorithmus für den Tiefendurchlauf von gerichteten Graphen, wobei jede Kante nur einmal verwendet werden darf! \index{Tiefensuche} \end{itemize} %% % c) %% \item Ein wesentlicher Nachteil der Standardimplementierung des QUICKSORT Algorithmus ist dessen rekursiver Aufruf. Implementieren Sie den Algorithmus QUICKSORT ohne den rekursiven Prozeduraufruf! \index{Quicksort} \end{enumerate} \end{document}