Vor ein paar Tagen habe ich eine Frage zu diesem selben Projekt gestellt, seitdem hat unsere Gruppe alle unsere Methoden außer einer, die verwendet wird, um festzustellen, ob ein binärer Suchbaum ist Komplett.Recursivley Test, wenn ein binärer Suchbaum abgeschlossen ist
Wir verwenden eine Wrapper-Methode und eine Hilfsmethode, um dies rekursiv zu tun.
Wir wissen, dass wir bis Level h-1 des Baumes (h ist Höhe) überprüfen müssen, um sicherzustellen, dass es perfekt ist, dann müssen wir sicherstellen, dass alle Blattknoten auf der letzten Ebene von links gehen ohne Lücken.
Egal was wir versuchen, wir können nicht herausfinden, wie man die verbleibenden Blattknoten rekursiv überprüft, um sicherzustellen, dass sie von links nach rechts aufeinander folgen. Wir können jedoch sicherstellen, dass es bis Level (h-1) perfekt ist.
Könnte uns jemand in die richtige Richtung zeigen, wie man die Blattknoten auf der letzten Ebene rekursiv überprüft, um sicherzustellen, dass sie linksbündig sind?
Soweit ist das Code?
public boolean isComplete()
{
if (isPerfect(root))
return true;
return isComplete(root);
}
/**
*
* @param node
* @return
*/
private boolean isComplete(Node node)
{
if (height(node) > 1)
{
if (node.left != null && node.right != null && (height(node.left) == height(node.right)))
return isComplete(node.left) && isComplete(node.right);
else
return false;
}
}
PS alle trivialen Fälle in der isperfect() -Methode, da jeden perfekten Baum behandelt werden, ist ebenfalls komplett
I getestet oder ausgeführt werden oder diese kompiliert haben nicht überprüfen müssen. Seien Sie also vorsichtig bei kleineren Fehlern –
, während Ihr Code funktioniert, weicht er von den Anforderungen der Verwendung nur eines Parameters in der Wrapper-Methode ab. Vielen Dank für die Eingabe! Ich kann wahrscheinlich die Schritte benutzen, die du gemacht hast, um etwas heraufzubeschwören. – sbowde4
@ sbowde4 Ich weiß nicht, wenn Sie bemerkt haben, verwendet der Wrapper nur einen Parameter –