Altklausur April/13 Nr5: Statt Enkel-, Kinderknoten betrachten?!

Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!

Moderator: Algorithmen und Datenstrukturen

Forumsregeln
Bei Postings zu Aufgabe Nr. x = 1..4 lassen Sie Ihr Betreff bitte mit "x: " beginnen, gefolgt von einer möglichst präzisen Überschrift, danke!
ln62cudi
Neuling
Neuling
Beiträge: 9
Registriert: 13. Apr 2016 06:35

Altklausur April/13 Nr5: Statt Enkel-, Kinderknoten betrachten?!

Beitrag von ln62cudi »

In der Musterlösung werden in der eigentlichen Methode die Kinderknoten von der Wurzel betrachtet und in der rekursiven Hilfsmethode werden dann je nur noch Enkelknoten betrachtet. Ich kann es zwar nachvollziehen, aber mir erscheint es zu kompliziert. Gibt es einen konkreten Grund dafür, dass man nicht jeweils nur die Kinder-, sondern auch Enkelknoten betrachtet? Und könnte man den Code stattdessen auch wie folgt (auf Kinderknoten beschränkt) schreiben:

public void reduceToCompleteness () {
if (root != null)
reduceToCompletenessRec(root);
}

public void reduceToCompletenessRec (BinaryTreeNode node){

if (node.left == null && node.right != null){
node = node.right;
reduceToCompletenessRec(node.right);
} else
if (node.left != null && node.right == null){
node = node.left;
reduceToCompletenessRec(node.left);
} else
if (node.left != null && node.right != null){
reduceToCompleteness(node.left);
reduceToCompleteness(node.right);
}
}

Danke für eine Antwort!

Nicca
Windoof-User
Windoof-User
Beiträge: 33
Registriert: 7. Jun 2016 13:35

Re: Altklausur April/13 Nr5: Statt Enkel-, Kinderknoten betrachten?!

Beitrag von Nicca »

Das würde mich auch interessieren, denn ich habe es ähnlich implementiert wie ln62cudi und mich dann in der Musterlösung über die Enkel gewundert...

Falls also noch jemand einen Last-Minute-Tipp hat...

0ch5
Neuling
Neuling
Beiträge: 1
Registriert: 19. Sep 2016 19:28

Re: Altklausur April/13 Nr5: Statt Enkel-, Kinderknoten betrachten?!

Beitrag von 0ch5 »

Damit geht die Referenz zwischen dem zu löschenden Knoten und dem Knoten dadrüber verloren und ihr habt nicht nur den Knoten gelöscht, sondern auch den dadran hängenden Teilbaum. ^^

Antworten

Zurück zu „AuD: Programmieraufgaben“