diff --git a/303_Binaerbaeume.tex b/303_Binaerbaeume.tex index bb16e19c542b417cdb920ffd2e4aaae521d2d0e8..684a6c997208484afff5342416f60d2463f61698 100644 --- a/303_Binaerbaeume.tex +++ b/303_Binaerbaeume.tex @@ -251,7 +251,18 @@ löschende Knoten hat genau ein Kind, der zu löschende Knoten hat zwei Kinder. \label{fig:BST_delete} \end{figure} -Wir formalisieren es folgendermaßen: +Wie in Abbildung \ref{fig:BST_delete} skizziert, ist beim Löschen zwischen drei Fällen zu unterscheiden, je nach Anzahl +der Kinder des zu löschenden Knotens: +\begin{itemize} + \item Hat der Knoten keine Kinder, ist also ein Blatt, so können wir ihn einfach durch einen leeren Baum ersetzen. + \item Hat der Knoten genau ein Kind, so rutscht dieses sofort auf. + \item Hat der Knoten zwei Kinder, so ersetzen wir den Wert durch den Nachfolger $y$ (das Minimum des rechten + Teilbaums). Dieser wird daraufhin aus dem rechten Teilbaum gelöscht. Da $y$ kein linkes Kind + hat (sonst gäbe es kleinere Elemente als $y$ in diesem Teilbaum und es wäre kein Minimum), tritt beim Löschen von + $y$ dann einer der oberen beiden Fälle ein. +\end{itemize} + +Zusätzlich muss der zu Löschende Knoten zuerst im Baum gefunden werden. Wir formalisieren folgendermaßen: \begin{align*} \texttt{fad}(ε,x) &= ε \\ \texttt{fad}(l\; x'\; r, x) &=