Hallo, kann mir jemand helfen diese Methode nachzuvollziehen:
Sie soll den größten Eintrag eines Binärbaums löschen.
Ich verstehe das so:
-1. Es wird in der ersten if-Schleife überprüft ob die Baumwurzel null ist. Falls ja soll null zurückgegeben werden.
2. Falls eine Wurzel existiert wird In der zweiten if-Schleife wird überprüft ob rechts überhaupt etwas ist. Falls nein ist automatisch der linke Wert der Größte. Ergibt noch Sinn.
3. Dann kommt das was ich nicht ganz verstehe: Falls rechts doch ein Wert existiert (also in die else-Anweisung übergegangen wird, soll
das hier gelten. Na gut.. Man ruft die Methode rekursiv nochmal auf und übergibt p.right, was aber meiner Meinung nach darin resultiert, dass irgendwann die erste if-Schleife greift, da p ja irgendwann null sein muss. Demnach wird einfach nur null zurückgegeben irgendwann ?
Sie soll den größten Eintrag eines Binärbaums löschen.
Ich verstehe das so:
-1. Es wird in der ersten if-Schleife überprüft ob die Baumwurzel null ist. Falls ja soll null zurückgegeben werden.
2. Falls eine Wurzel existiert wird In der zweiten if-Schleife wird überprüft ob rechts überhaupt etwas ist. Falls nein ist automatisch der linke Wert der Größte. Ergibt noch Sinn.
3. Dann kommt das was ich nicht ganz verstehe: Falls rechts doch ein Wert existiert (also in die else-Anweisung übergegangen wird, soll
Code:
else
p.right = delMaxR(p.right);
return p;
das hier gelten. Na gut.. Man ruft die Methode rekursiv nochmal auf und übergibt p.right, was aber meiner Meinung nach darin resultiert, dass irgendwann die erste if-Schleife greift, da p ja irgendwann null sein muss. Demnach wird einfach nur null zurückgegeben irgendwann ?
Java:
public void delMax()
{
root = delMaxR(root);
}
private static Node delMaxR(Node p)
{
if (p == null)
return null;
if (p.right == null)
p
= p.left;
else
p.right = delMaxR(p.right);
return p;
}