Suchbaum iterativ absteigen?

H

HansPeterLoft

Gast
Hallo, ich habe hier einen Binärbaum aus Objekten mit Namen.
Nun steige ich aber für den linken oder rechten Nachfolger in addElement(...){...}
immer rekursiv ab, wie kann ich aber iterativ absteigen z.B mit einer while-Schleife?
Wenn ich einfach:
Java:
while(p.left != null) {
	p = p.left;
}

versuche, dann zeigt ja das Objekt p auf seinen linken Nacholger, beim rekursiven Abstieg
hingegen bleibt p gleich, aber z.B p.left.left.left wird hinzugefügt usw...
Wie mache ich das Iterativ? Gruss

Java:
public class Main {
	public static void main(String [] args) {
		List list = new List("Hans");
		list.addElement("Peter", list);
		list.addElement("Kurt",list);
		
		list.out(list);
	}
}

class List {
	String name;
	List left,right;
	List(String n) {
		name = n;
		left = null;
		right = null;
	}
	
	void addElement(String n, List p) {
		if(n.compareTo(p.name) < 0) {
			if(p.left != null)
				addElement(n,p.left);
			else p.left = new List(n);
		} else {
			if(p.right != null)
				addElement(n,p.right);
			else p.right = new List(n);
		}
			
	}
	
	void out(List p) {
		if(p != null) {
			out(p.left);
			System.out.println(p.name);
			out(p.right);
		}
	}
}
 
S

SlaterB

Gast
du kannst das Objekt, auf das p vor der Schleife zeigt, eben vor dieser Schleife in einer anderen Variablen merken,
brauchst du alle Objekte auf dem Weg, kannst du sie in eine Liste einfügen,
oder was immer nötig erscheint

wenn du die out-Methode meinst.., nun da wäre viel zu merken, dann doch eher wieder von jedem Objekt auf dem Vorgänger verweisen,
ein Durchlauf indem bei jedem Objekt ein Marker 'warIchSchonDa' auf true/ false gesetzt wird,
bzw. doch in separater Datenstruktur merken, welche Knoten schon besucht

kennst du
Dijkstra-Algorithmus ? Wikipedia
Liste noch zu besuchender Nachbarknoten?
so in der Art, nur Reihenfolge wichtig,
Stack-Gedanke kommt ins Spiel
 
Zuletzt bearbeitet von einem Moderator:
H

HansPeterLoft

Gast
Ok, ich möchte das nur bei addElement(){} versuchen.

Den Dijkstra kannte ich noch nicht, werde mir den mal anschauen, danke.
 
S

SlaterB

Gast
bei addElement() kann dir der Zustand von p egal sein, brauchst du nicht weiter,
Variablen beim Aufrufer der Methode werden nicht beeinträchtigt

dass man von außen
> list.addElement("Peter", list);
aufrufen muss ist generell unschön,

> list.addElement("Peter");
sollte reichen, diese Methode ohne Parameter könnte ja zunächst die andere mit this, sich selber, als Parameter aufrufen
das aber nur in der rekursiven Variante

bei iterativ kann und sollte der Parameter in jedem Fall wegfallen,
beginne auch hier mit
> List p = this;

edit:
auch in der Rekursion könnte der Parameter immer wegfallen, eine Methode reicht immer:
Java:
 if(n.compareTo(this.name) < 0) {
            if(this.left != null)
                this.left.addElement(nt);
            else this.left = new List(n)
usw.

das wäre eine saubere Rekursion, jedes List-Objekt kommt auch tatsächlich dran statt nur mehrere Aufrufe beim ersten List-Objekt,
aber je nach Geschmack alles denkbar
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Cassy3 Binärer Suchbaum Knoten rauslöschen Java Basics - Anfänger-Themen 1
G Java Binärer Suchbaum Java Basics - Anfänger-Themen 1
G Binärer Suchbaum Knoten zählen Java Basics - Anfänger-Themen 1
O Suchbaum Elternknoten finden Level eines Knoten bestimmen Java Basics - Anfänger-Themen 24
L Binärer Suchbaum Java Basics - Anfänger-Themen 2
N ID3 - Suchbaum ertellen! Java Basics - Anfänger-Themen 0
M Suchbaum implementieren Java Basics - Anfänger-Themen 8
C Methoden Methode zu einem Binären Suchbaum Java Basics - Anfänger-Themen 8
J Suchbaum Java Basics - Anfänger-Themen 3
B Datentypen Suchbaum - Rekursive Ausgabe Java Basics - Anfänger-Themen 1
U Binärer Suchbaum delete Java Basics - Anfänger-Themen 1
S Binärer Suchbaum - Size als Variabel in innerer Klasse speichern Java Basics - Anfänger-Themen 2
N Binären Suchbaum erstellen, nachzuvollziehen Java Basics - Anfänger-Themen 0
W binären Suchbaum Kantenanzahl Java Basics - Anfänger-Themen 3
G Rekursion Suchbaum Java Basics - Anfänger-Themen 2
W Löschen Datenknoten Suchbaum Java Basics - Anfänger-Themen 4
E binärer suchbaum Java Basics - Anfänger-Themen 8
K Binärer Suchbaum Java Basics - Anfänger-Themen 3
D Binärer Suchbaum Java Basics - Anfänger-Themen 11
Q Binärer suchbaum Java Basics - Anfänger-Themen 2
N Tiefe im binären Suchbaum Java Basics - Anfänger-Themen 9
I Rekursives Löschen in Binärem Suchbaum Java Basics - Anfänger-Themen 2
Y Binärer Suchbaum Java Basics - Anfänger-Themen 5
A Suchbaum Java Basics - Anfänger-Themen 4
DasDogma Suche im Suchbaum Java Basics - Anfänger-Themen 2
D suchbaum out of heap space Java Basics - Anfänger-Themen 8
M Binärer Suchbaum Höhe Java Basics - Anfänger-Themen 6
G Hoffe jemand kann mir ein paar Tips geben:binärer Suchbaum Java Basics - Anfänger-Themen 3
G Binäre Suchbaum + Erstellung des Programmes Java Basics - Anfänger-Themen 4
E Binärer Suchbaum Java Basics - Anfänger-Themen 7
Bierhumpen Suchbaum problem. Java Basics - Anfänger-Themen 8
R binärer Suchbaum Java Basics - Anfänger-Themen 1
wuerg Türme von Hanoi Iterativ Java Basics - Anfänger-Themen 8
jhCDtGVjcZGcfzug Fibonacci Zahlen rekursiv und iterativ Java Basics - Anfänger-Themen 21
R Iterativ zeichnen Java Basics - Anfänger-Themen 1
G Primzahlen von Rekursiv nach Iterativ Java Basics - Anfänger-Themen 6
F Alle Zeichenkombinationen eines Strings iterativ herausfinden Java Basics - Anfänger-Themen 26
F Iterativ in Rekursiv Java Basics - Anfänger-Themen 2
I MergeSort iterativ mit Stacks Java Basics - Anfänger-Themen 13
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
M Werte der Knoten in Binärbaum addieren (iterativ) Java Basics - Anfänger-Themen 6
E Binärbaum - von rekursiv zu iterativ Java Basics - Anfänger-Themen 10
T Methoden Fibunacci Iterativ Java Basics - Anfänger-Themen 6
S java rekursiv iterativ hilfee :s Java Basics - Anfänger-Themen 5
P Hanoi rekursiv zu iterativ umbauen Java Basics - Anfänger-Themen 20
W Binomialkoeffizient iterativ/rekursiv Java Basics - Anfänger-Themen 2
P QuickSort iterativ Java Basics - Anfänger-Themen 5
M Rekursion Iterativ ausdrücken Java Basics - Anfänger-Themen 3
B Begriff Iterativ Java Basics - Anfänger-Themen 2
J Java Rekursiv vs(zu) Iterativ Hilfe Java Basics - Anfänger-Themen 3
F Sortieralgorithmus von rekursiv auf iterativ? Java Basics - Anfänger-Themen 21
N Fibo Zahlen:iterativ,rekursiv Anzahl der Additionen zählen Java Basics - Anfänger-Themen 2
X Türme von Hanoi - Iterativ Java Basics - Anfänger-Themen 8
T funktion iterativ Java Basics - Anfänger-Themen 4
I Iterativ <-> Rekursiv in Java Java Basics - Anfänger-Themen 11
B von rekursiv zu iterativ Java Basics - Anfänger-Themen 6
F MergeSort iterativ mit Hilfe von Stack Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben