# rekursiv einfügen in einen binären Suchbaum



## insertNameHere (19. April 2007)

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



```
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?


----------



## insertNameHere (19. April 2007)

ok so gehts:


```
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?


----------



## Thomas Darimont (20. April 2007)

Hallo,

schau mal hier:
http://www.tutorials.de/forum/algor...248957-implementierung-eines-binaerbaums.html

Gruß Tom


----------



## insertNameHere (20. April 2007)

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 


```
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  Gilt das generell für eine Rekursion oder kann man das irgenwie umgehen, ohne den Pointer mit


```
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  

Vielen Dank


----------

