\documentclass{bschlangaul-aufgabe}
\bLadePakete{java,baum}
\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 3},
  Thematik = {Binärbäume},
  Referenz = 66115-2021-F.T2-TA2-A3,
  RelativerPfad = Examen/66115/2021/03/Thema-2/Teilaufgabe-2/Aufgabe-3.tex,
  ZitatSchluessel = examen:66115:2021:03,
  BearbeitungsStand = mit Lösung,
  Korrektheit = unbekannt,
  Ueberprueft = {unbekannt},
  Stichwoerter = {Binärbaum},
  EinzelpruefungsNr = 66115,
  Jahr = 2021,
  Monat = 03,
  ThemaNr = 2,
  TeilaufgabeNr = 2,
  AufgabeNr = 3,
}

\begin{enumerate}
\item Betrachten Sie folgenden Binärbaum T.
\index{Binärbaum}
\footcite{examen:66115:2021:03}

Geben Sie die Schlüssel der Knoten in der Reihenfolge an, wie sie von
einem Preorder-Durchlauf (= TreeWalk) von T ausgegeben werden.

\begin{center}
\begin{tikzpicture}[b binaer baum]
\Tree
[.14
  [.15
    [.98
      [.3
        \edge[blank]; \node[blank]{};
        [.4 ]
      ]
      \edge[blank]; \node[blank]{};
    ]
    \edge[blank]; \node[blank]{};
  ]
  [.25
    [.33
      \edge[blank]; \node[blank]{};
      [.19 ]
    ]
    [.18
      [.26 ]
      [.17 ]
    ]
  ]
]
\end{tikzpicture}
\end{center}

\begin{bExkurs}[Preorder-Traversierung eines Baum]

besuche die Wurzel, dann den linken Unterbaum, dann den rechten
Unterbaum; auch: WLR

\bJavaDatei[firstline=62,lastline=68]{baum/BinaerBaum}
\end{bExkurs}

\begin{bAntwort}
14, 15, 98, 3, 4, 25, 33, 19, 18, 26, 17
\end{bAntwort}

\item Betrachten Sie folgende Sequenz als Ergebnis eines
Preorder-Durchlaufs eines binären Suchbaumes $T$. Zeichnen Sie $T$ und
erklären Sie, wie Sie zu Ihrer Schlussfolgerung gelangen.

\begin{center}
[8,7,4,2,1,3,5,6,10,9,11]
\end{center}

\textbf{Hinweis:} Welcher Schlüssel ist die Wurzel von $T$? Welche
Knoten sind in seinem linken/rechten Teilbaum gespeichert? Welche
Schlüssel sind die Wurzeln der jeweiligen Teilbäume?

\begin{bAntwort}
\begin{center}
\begin{tikzpicture}[b binaer baum]
\Tree
[.8
  [.7
    [.4
      [.2
        [.1 ]
        [.3 ]
      ]
      [.5
        \edge[blank]; \node[blank]{};
        [.6 ]
      ]
    ]
    \edge[blank]; \node[blank]{};
  ]
  [.10
    [.9 ]
    [.11 ]
  ]
]
\end{tikzpicture}
\end{center}
\end{bAntwort}

\item Anstelle von sortierten Zahlen soll ein Baum nun verwendet werden,
um relative Positionsangaben zu speichern. Jeder Baumknoten enthält eine
Beschriftung und einen Wert (vgl. Abb. 1), der die ganzzahlige relative
Verschiebung in horizontaler Richtung gegenüber seinem Elternknoten
angibt. Die zu berechnenden Koordinaten für einen Knoten ergeben sich
aus seiner Tiefe im Baum als $y$-Wert und aus der Summe aller
Verschiebungen auf dem Pfad zur Wurzel als $x$-Wert. Das Ergebnis der
Berechnung ist in Abb. 2 visualisiert. Geben Sie einen Algorithmus mit
linearer Laufzeit in Pseudo-Code oder einer objektorientierten
Programmiersprache Ihrer Wahl an. Der Algorithmus erhält den Zeiger auf
die Wurzel eines Baumes als Eingabe und soll Tupel mit den berechneten
Koordination aller Knoten des Baums in der Form (Beschriftung, $x$, $y$)
zurück- oder ausgeben.

\begin{bAntwort}
\bJavaExamen{66115}{2021}{03}{Knoten}
\end{bAntwort}

\end{enumerate}
\end{document}
