dvs hat geschrieben:vielleicht kann jemand einen lauf für den binärbaum mit Wurzel = 3,
Blatt = 4, Blatt = 5 und Wert 4 genau vorführen?
Okay, dann mal los: Linkes Blatt ist die 4 und rechtes die 5.
Also die obere Variante von
löscheBlätter wird mit der Wurzel aufgerufen.
current referenziert jetzt also die Wurzel. Die ist nicht
null und ihre beiden Kinder auch nicht, also wird der
else-Block ausgeführt. Also wird zuerst
löscheBlätter mit
current.links aufgerufen. So, wir haben gesagt, dass
current auf die Wurzel zeigt. Also zeigt
current.links auf das linke Kind der Wurzel. Jetzt wird ja die Funktion
löscheBlätter noch mal aufgerufen und da zeigt jetzt
current auf das linke Kind der Wurzel (weil wir es ja gerad so übergeben haben). Dies ist jetzt aber ein Blatt, also wird geguckt, ob der Wert gleich dem gegebenen ist, was auch der Fall ist. Also wird
null zurückgegeben. Jetzt sind wir wieder in Zeile 21 vom vorherigen
löscheBlätter-Aufruf. Dort wird jetzt
current.links auf
null gesetzt, denn das ist ja der Wert, den wir eben zurückgegeben haben. Die Wurzel verliert also ihr linkes Kind. Dann gehts mit dem rechten genauso weiter, nur dass dort nicht
null zurückgegeben wird, weil die Werte ungleich sind; die Wurzel darf also ihr rechtes Kind behalten.
Alles verstanden?
(Ich hoffe, da is jetzt kein Fehler drin, sonst biste gleich total verwirrt.)