Baum Code kurze frage ...

Mino1337

Mitglied
Hallo,

ich habe eine Klasse und eine Methode.


Klasse Tree :

Java:
class Tree<T> {
private class Node {
Node[] children;
T data;
}
Node root;
}


Methode :


Java:
int countNodes() {
return countNodes(root);
}
int countNodes(Node pos){
int count = 0;
if (pos.children != null)
for (int i=0;i<pos.children.length;i++)
count += countNodes(pos.children[i]);
return count+1;
}

Die Methode soll rekursiv die ANzahl der Knoten des Baums wiedergeben aber ich verstehe nicht wie:

Nehmen wir an ich habe einen Baum mit 1000 Knoten und die Wurzel hat 2 Kinder dann gibt mir diese Methode doch nur die zahl 3 zurück. Wo ist da was Rekursiv ?

Die Wurzel ist ja auch nur ein Knoten und hat einen Array mit 2 Kindern drinnen und die Methode tut nichts als diesen Array abzuzählen und das ergebniss +1 zurück zu schicken oder hab ich die rekursion doch übersehen ?!


Danke =)
 

kaoZ

Top Contributor
das ist nicht rekursiv

Java:
for (int i=0;i<pos.children.length;i++)
count += countNodes(pos.children[i]);
return count+1;


rekursiv bedeutet das sich etwas so oft selbst aufruft bis eine bestimmte Abbruchbedingung eintritt, in deinem Fall würde sich die Methode also dementsprechend selbst aufrufen.

[EDIT]Die formatierung ist aber auch grausam, es sind 2 Methoden die ineinander ausgeführt werden btw, also könnte das ganze doch rekursiv ablaufen, die intern verwendete Methode iteriert lediglich über die knoten der Kinder und zählt diese zusammen, ob die implementierung nun richtig ist habe ich aber nicht geschaut[/EDIT]
 
Zuletzt bearbeitet:

Mino1337

Mitglied
Java:
    int countNodes() {
    return countNodes(root);
    }


    int countNodes(Node pos){
    int count = 0;
       if (pos.children != null)
          for (int i=0;i<pos.children.length;i++)
              count += countNodes(pos.children[i]);
              return count+1;
    }


Ich habe mal versucht das besser einzurücken ... Das sollte zumindest Richtig sein da es aus einer Musterlösung ist ...

Ich verstehe nur nicht wie das Rekursiv sein soll ... Die Methoden laufen ja hintereinander nicht ineinander ...
 

Natac

Bekanntes Mitglied
Natürlich ist das Rekursiv. Habe zur Verdeutlichung mal { } gesetzt, denn deine Einrückung suggeriert einen falschen Ablauf.
Java:
int countNodes() {
  return countNodes(root); // Aufruf mit der Wurzel
}
     
     
int countNodes(Node pos){ // Zähle Kinder +1 (für die Node selbst)
  int count = 0;
  if (pos.children != null){ // wenn wir Kinder haben haben
    for (int i=0;i<pos.children.length;i++){ // für jedes Kind, Abbruchbedingung ist die maximale Anzahl an Kindern
      count += countNodes(pos.children[i]); // Zähle Kinder der Kinder -> Rekursion, da Methode erneut aufgerufen wird.
    }
  }
  return count+1; // Rückgabe Anzahl aller Kinder + 1 (pos selbst).
}

Ich denke das Problem ist die Einrückung gewesen. Am besten für alle for und ifs immer Klammern {} setzen, sonst können solche Fehler eben schnell passieren. ;)
 

kaoZ

Top Contributor
stimmt hab ich übersehen da die rekursion hier während eines iterativen Vorganges abläuft

Java:
countNodes(pos.children[i])

[EDIT]Ich sagte ja suboptimal formatiert ^^[/EDIT]
 
Zuletzt bearbeitet:

Natac

Bekanntes Mitglied
Rekursion heißt ja nur, dass sich die Methode selbst aufruft. Es trifft keine Aussage darüber, wie oft sie das pro Aufruf tut. ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9
HelpInneed Baum ausgeben (aber mal anders) Java Basics - Anfänger-Themen 3
G AVL-Baum Java Basics - Anfänger-Themen 1
G Rot-Schwarz-Baum Java Basics - Anfänger-Themen 8
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
CptK Interface Baum visualisieren Java Basics - Anfänger-Themen 37
CptK Best Practice Merge-Sort als Baum darstellen Java Basics - Anfänger-Themen 3
E Baum pfadweise durchlaufen Java Basics - Anfänger-Themen 11
O Naives links rechts einfügen in ADT Baum Java Basics - Anfänger-Themen 8
L Traversierungsverfahren Baum: LevelOrder Java Basics - Anfänger-Themen 17
L Rekursion im Baum Java Basics - Anfänger-Themen 9
L Baum Knoten zählen Java Basics - Anfänger-Themen 6
L B+Baum innere Knoten erstellen Java Basics - Anfänger-Themen 3
D B-Baum einfügen und löschen Java Basics - Anfänger-Themen 2
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
D Werte AVL-Baum löschen Java Basics - Anfänger-Themen 2
M Binären Baum Kinder setzen Java Basics - Anfänger-Themen 12
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 4
U 2-3-4 Baum Top-Down Java Basics - Anfänger-Themen 0
J Überprüfen, ob eine 2D Matrix ein Baum ist Java Basics - Anfänger-Themen 5
R Baum erzeugen Java Basics - Anfänger-Themen 61
B Baum Traversierung Postorder Java Basics - Anfänger-Themen 6
B OOP Über einen AVL-Baum iterieren (NullPointer) Java Basics - Anfänger-Themen 5
A Voller Baum Java Basics - Anfänger-Themen 7
S n-ärer Baum Java Basics - Anfänger-Themen 6
O Unterschied Baum <-> Automat Java Basics - Anfänger-Themen 2
K Tiefen- und Breitensuche beim Baum durch Stack und Warteschlange Java Basics - Anfänger-Themen 1
C kompletter baum Java Basics - Anfänger-Themen 2
M Collections Iterator und generischer Baum Java Basics - Anfänger-Themen 0
D Ein Objekt in einem Baum finden und ausgeben. Java Basics - Anfänger-Themen 4
K Rot-Schwarz-Baum min und max-Tiefe Java Basics - Anfänger-Themen 1
A min() Methode Baum Java Basics - Anfänger-Themen 1
J Baum rekursiv durchlaufen Java Basics - Anfänger-Themen 2
J Baum Knoten löschen Java Basics - Anfänger-Themen 10
T Baum mit Turtle zeichnen Java Basics - Anfänger-Themen 2
Screen 2,4 Baum Frage Java Basics - Anfänger-Themen 6
T Rot-schwarz Baum Problem Java Basics - Anfänger-Themen 3
A Rekursion in Baum und ArrayList als Rückgabe Java Basics - Anfänger-Themen 2
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
C 2-3 Baum Java Basics - Anfänger-Themen 6
H Baum Java Basics - Anfänger-Themen 4
L Rot Scharz Baum von Binärbaum erben Java Basics - Anfänger-Themen 9
B Baum > Baum-Swing Java Basics - Anfänger-Themen 4
L eigenen Baum schreiben Java Basics - Anfänger-Themen 5
Luk10 Anzahl der Knoten in einem Baum ausgeben! Java Basics - Anfänger-Themen 6
T Array in einen Baum zu überführen Java Basics - Anfänger-Themen 3
S Das reinschreiben einer Klasse in den Baum Java Basics - Anfänger-Themen 6
H B-Baum: Knoten Position als Parameter oder als Variable im Objekt? Java Basics - Anfänger-Themen 4
A Baum mit geometricfigur Werte Java Basics - Anfänger-Themen 6
D Datentypen Einfügen im RotSchwarz Baum Java Basics - Anfänger-Themen 2
F FileSystem in Baum darstellen/wurzel festlegen Java Basics - Anfänger-Themen 3
G List als Rückgabewert einer rekursiven Methode (Baum) Java Basics - Anfänger-Themen 3
I Baum graphisch darstellen Java Basics - Anfänger-Themen 2
P Binärer Baum mit Composite-Entwurfsmuster Java Basics - Anfänger-Themen 2
L Baum Swing AVL Java Basics - Anfänger-Themen 4
Binary.Coder 2-3-4 Baum vs. (2,4) Baum Java Basics - Anfänger-Themen 2
ModellbahnerTT Ab-Baum Applet Java Basics - Anfänger-Themen 3
P Baum-Menü in Java Java Basics - Anfänger-Themen 5
H Baum Java Basics - Anfänger-Themen 11
G AVL Baum Java Basics - Anfänger-Themen 20
J Baum spiegeln Java Basics - Anfänger-Themen 7
N 2-3 Baum, Einfügen Java Basics - Anfänger-Themen 5
G Rekursion mit Return - Baum durchlaufen Java Basics - Anfänger-Themen 4
G Baum Datenstruktur Java Basics - Anfänger-Themen 2
V Baum mit log n Aufwand für Einfügen und Löschen und. Java Basics - Anfänger-Themen 5
H Tiefensuche im binären Baum Java Basics - Anfänger-Themen 2
P Problem mit Darstellung im Baum Java Basics - Anfänger-Themen 4
G Binärer Baum Java Basics - Anfänger-Themen 3
M Binärer Baum Tiefe Java Basics - Anfänger-Themen 14
G universeller baum Java Basics - Anfänger-Themen 13
G Baum testen Java Basics - Anfänger-Themen 20
B Array To Baum Java Basics - Anfänger-Themen 2
B Baum to Array Java Basics - Anfänger-Themen 17
H Löschen in einem binären Baum führt zu einem StackOverflow Java Basics - Anfänger-Themen 2
L Binären Baum speichern Java Basics - Anfänger-Themen 6
R Pythagoras-Baum Java Basics - Anfänger-Themen 5
W Baum durchlaufen Java Basics - Anfänger-Themen 3
T binärer Baum Java Basics - Anfänger-Themen 3
G eine Knoten aus einem Baum löschen. [SOLVED] Java Basics - Anfänger-Themen 7
P allg. Baum aus Liste Java Basics - Anfänger-Themen 2
J String in binären Baum umwandeln Java Basics - Anfänger-Themen 7
R binärer Baum Java Basics - Anfänger-Themen 2
F Abstrakte Klasse Baum Java Basics - Anfänger-Themen 6
M Code aus IntelliJ in "Textform" für Word-Paper? Java Basics - Anfänger-Themen 10
T Kann mir jemand wörtlich erklären, was in dem Code genau passiert? Java Basics - Anfänger-Themen 1
Ü Dead Code im Programm? Java Basics - Anfänger-Themen 13
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
terashy VS Code Project run error Java Basics - Anfänger-Themen 10
JaZuDemNo Code Erklärung Java Basics - Anfänger-Themen 3
M Connect-4-Code analysieren Java Basics - Anfänger-Themen 2
N BMI Rechner Was haltet ihr von dem Code habt ihr Verbesserungsvorschläge weil design teschnisch ist das nicht das geilste würde das gerne überarbeiten Java Basics - Anfänger-Themen 12
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
T Fehlercode bei code der das Alter ausrechnet Java Basics - Anfänger-Themen 2
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
jhfjeh Strukturgramm in code Java Basics - Anfänger-Themen 11
D Tipps zum Code Java Basics - Anfänger-Themen 24
W Java-Code mit Array Java Basics - Anfänger-Themen 14
W Java-Code Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben