# Knoten zählen in einem Binärbaum



## starbug08 (3. Mai 2011)

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



```
// 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;
}
```


----------



## Final_Striker (3. Mai 2011)

```
countNodes(node.getLeft());
```

Du musst den Rückgabewert abfangen und verwenden.


----------



## Laurin (4. Mai 2011)

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:

```
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;
  }
```


----------

