Knoten zählen in einem Binärbaum

starbug08

Mitglied
hallo allerseits,
ich hab folgendes problem. ich soll eine methode schreiben die rekursiv aufgerufen wird um die anzhal der knoten in einem binärbaum zu zählen. hier ist mal mein vorschlag, leider klappts nicht so wie ich will. danke schon mal im vorraus


Java:
// Gibt die Anzahl der Knoten im Baum zurück.
// node ist die Wurzel des aktuellen (Teil)baums.
public static int countNodes(BinaryNode node)
{
int z1 = 0;
int z2 = 0;
int zaehler = 0;
if(node.getLeft()!=null)
{
countNodes(node.getLeft());
z1++;

}
if (node.getRight()!=null)
{
countNodes(node.getRight());
z2++;
}
zaehler = z1 + z2;
return zaehler;
}
 
z1++ und z2++ funktionieren nicht, weil sie sich immer auf z1 und z2 im aktuellen Funktionsaufruf beziehen. Hier wurden sie zuvor mit 0 initialisiert. Am Ende sin z1 und z2 also immer gleich 1 oder 0.

Versuche es mal in etwa so:
Java:
  public static int countNode(Node node) {
    int countNodeLeft = (node.getLeft() != null) ? countNode(node.getLeft()) : 0;
    int countNodeRight = (node.getRight() != null) ? countNode(node.getRight()) : 0;
    return 1 + countNodeLeft + countNodeRight;
  }
 

Neue Themen


Zurück
Oben