rekursiv einfügen in einen binären Suchbaum

insertNameHere

Grünschnabel
hallo,
also das soll ich als Aufgabe machen, und das Durchgehen des Baumes klappt auch schon ganz gut, nur durch die Rekursion werden die Knoten dann glaube ich nicht richtig besetzt


Code:
public boolean insertRekursiv(Node s, Node root) {
		if (root == null) {
			root = s;
			return true;
		}
		if (s.Inhalt.compareTo(root.Inhalt) == 0)
			return false;
		else if (s.Inhalt.compareTo(root.Inhalt) == 1) {
			return insertRekursiv(s, root.rechts);
		} else
			return insertRekursiv(s, root.links);
	}

Weiss jemand wie das gehen könnte?
 
ok so gehts:

Code:
public boolean insertRekursiv(Node s, Node root) {
		if (s.Inhalt.compareTo(root.Inhalt) == 0)
			return false;
		else if (s.Inhalt.compareTo(root.Inhalt) == 1) {
			if (root.rechts==null){
				root.rechts=s;
				return true;
			}
			return insertRekursiv(s,root.rechts);
		} else{
			if (root.links==null){
				root.links=s;
				return true;
			}
			return insertRekursiv(s, root.links);
		}
		}

ich war mir eigentlich sicher gewesen, dass die Referenz mitgenommen wird im Rekursionsaufruf... oder habe ich einen anderen Fehler gemacht?
 
hallo Tom,
danke auf jeden Fall aber das hatte ich auch schon gefunden ;)

Meine Frage war mehr allgemein weil ich übergeb in meinem Rekursionsaufruf ja

Code:
return insertRekursiv(s, root.rechts);

und war verwundert, dass der Pointer nicht mitgenommen wird, weil das meiner Meinung nach der Fehler war, der das ganze sabotiert hat. Der Knoten wurde zwar irgendwann erzeugt aber da er ohne Pointer war halt auch direkt wieder weggeräumt :mad: Gilt das generell für eine Rekursion oder kann man das irgenwie umgehen, ohne den Pointer mit

Code:
if (root.links==null){
				root.links=s;

explizit noch ein Mal zu setzen?

Wahrscheinlich eine ziemlich doofe Frage aber Rekursion ist nicht so unbedingt mein Fall :eek:

Vielen Dank
 
Zurück