# Anzahl der Knoten in einem Baum ausgeben!



## Luk10 (8. Mai 2011)

Hallo,

meine Frage bezieht sich auf die Datenstruktur Baum. Dort möchte ich rekursiv die Anzahl aller Knoten in diesem Baum ausgeben.

Aufgerufen wird die Methode auf den ersten Knoten (obersten) also die Wurzel.
Es handelt sich um einen Baum mit x Kinderknoten in einem Array.

Mein Ansatz:

```
public int getAnzahl () {
  int anzahl = 1;
  for (Knoten k : Kinderknoten) {
    anzahl += k.getAnzahl();
  }
  return anzahl;
}
```

Abschluss gibt 0 zurück!

Ansatz im Lehrbuch:

```
public int getAnzahl() {
  int anzahl = anzahlKinderknoten //Instanzvariable der aktuellen Anzahl der Kinderkn. im Array
  for (Knoten k : Kinderknoten) {
    anzahl += k.getAnzahl();
  }
  return anzahl;
```

Was ist der Unterschied und könnt ihr meinen Verdacht bestätigen, dass mein Ansatz richtig (im Gegensatz zu dem im Lehrbuch) ist?

Blöde Rekursion verwirrt micht ;(

Danke,
-Luk-


----------



## faetzminator (8. Mai 2011)

Deine Methode macht was du willst. Wie rufst du das ganze denn auf? Mindestens [c]1[/c] sollte da schon zurückgegeben werden.


----------



## Luk10 (8. Mai 2011)

Okay...

Aufgerufen wir die Methode in der Klasse Baum:


```
//Wurzel des gesammten Baumes vom Typ Baumelement (Superklasse von Knoten)
wurzel.getAnzahl();//Liefert immer min 1 zurück
```

Was ist mit der anderen Methode aus dem Lehrbuch? Sieht total seltsam aus denke ich ...

Danke,
-Luk-


----------



## faetzminator (8. Mai 2011)

Aber du merkst dir das Ergebnis gar nicht. [c]int anzahl = wurzel.getAnzahl();[/c] o.ä. wär hilfreich.


----------



## Luk10 (9. Mai 2011)

Ja eigentlich sieht die Methode so aus:


```
//<Klasse: Baum>
public void anzahlAusgeben () { 
  System.out.println("Anzahl der Knoten: " + wurzel.anzahlGeben();
}
```


----------



## faetzminator (9. Mai 2011)

Gib einen grösseren Ausschnitt oder den gesamten Code. Wie bereits gesagt, funktionieren diese Codefragmente.


----------



## Peter W. Marth (9. Mai 2011)

Hallo,

beide Algorithmen sind "richtig".
Unterschied ist, dass der aus dem Lehrbuch den Wurzelknoten nicht mitzählt.


----------

