Hallo Leute,
ich habe eine Frage zur Traversierung:
Erstmal folgender Code:
Es gibt mir dabei nur um die Logik, also der Code ist so nicht ausführbar!
Angenommen wir haben folgenden Baum:
a
/
b
/ \
c d
Der Algorithmus in Worten:
1. Schritt: a wird gelesen
2. Schritt: Funktion wird rekursiv [ preOrder(k.links); ] aufgerufen und "Cursor" steht bei b
3. Schritt: b wird gelesen
4. Schritt: Funktion wird rekursiv [ preOrder(k.links); ] aufgerufen und "Cursor" steht bei c
5. Schritt: c wird gelesen
!!!6. Schritt: Funktion wird rekursiv [ preOrder(k.links); ] aufgerufen und "Cursor" steht bei NULL !!!!
Nun ist k == 0 und nach meiner Verständnis würde preOrder(k.rechts); niemals aufgerufen.
Nur leider ist dies ja nicht der Fall, also wo liegt mein Denkfehler?
LG
ich habe eine Frage zur Traversierung:
Erstmal folgender Code:
Es gibt mir dabei nur um die Logik, also der Code ist so nicht ausführbar!
Java:
void preOrder(Knoten<E> k){
if (k != null){
tuWas(k.inhalt); // kann den Inhalt z.B. in eine Liste schreiben
preOrder(k.links);
preOrder(k.rechts);
}
Angenommen wir haben folgenden Baum:
a
/
b
/ \
c d
Der Algorithmus in Worten:
1. Schritt: a wird gelesen
2. Schritt: Funktion wird rekursiv [ preOrder(k.links); ] aufgerufen und "Cursor" steht bei b
3. Schritt: b wird gelesen
4. Schritt: Funktion wird rekursiv [ preOrder(k.links); ] aufgerufen und "Cursor" steht bei c
5. Schritt: c wird gelesen
!!!6. Schritt: Funktion wird rekursiv [ preOrder(k.links); ] aufgerufen und "Cursor" steht bei NULL !!!!
Nun ist k == 0 und nach meiner Verständnis würde preOrder(k.rechts); niemals aufgerufen.
Nur leider ist dies ja nicht der Fall, also wo liegt mein Denkfehler?
LG