Baumstruktur tiefe N erzeugen

Helgon

Bekanntes Mitglied
Hey.. steh momentan mit folgendem Problem aufm Schlauch.

Ich möchte eine Baumstruktur zur Laufzeit folgender Struktur erzeugen.

Meine Eigene Node Klasse habe ich bereits implementiert und "manuell" erzeugt funktioniert sie auch richtig. Siehe hier:

Java:
		Node a1 = new Node(rootNode);
		Node a2 = new Node(rootNode);

		Node b1 = new Node(a1);
		Node b2 = new Node(a1);
		Node b3 = new Node(a2);
		Node b4 = new Node(a2);

		Node c1 = new Node(b1);
		Node c2 = new Node(b1);
		Node c3 = new Node(b2);
		Node c4 = new Node(b2);
		Node c5 = new Node(b3);
		Node c6 = new Node(b3);
		Node c7 = new Node(b4);
		Node c8 = new Node(b4);
		
		System.out.println(rootNode.log(-1));

Code:
\---ROOT
       \---NODE
              \---NODE
                     \---NODE
                     \---NODE
              \---NODE
                     \---NODE
                     \---NODE
       \---NODE
              \---NODE
                     \---NODE
                     \---NODE
              \---NODE
                     \---NODE
                     \---NODE

Ist jetzt nurn Beispiel. Ich brauche einen Baum der Immer so viele Söhne wie Anfangszweige hat.

Im beispiel hier oben wäre es 2. Also 2 Söhne am Anfang, dann hat jeder Sohn weitere 2 Söhne. Soll theoretisch eben abhängig von N anfangs sein.

Nur komm ich grad einfach nicht drauf wie ichs umsetzen soll, dass jeder Sohn den parent kennt (wenn ichs iterativ mache).

Vielleicht kann mir grad wer auf die Sprünge helfen / Irgend ne Idee

Grüße
 
Zuletzt bearbeitet:
Ich habe im Studium zwar mal gelernt, dass jede Rekursion sich in eine Iteration umformen lässt. Allein, ich bin oft zu doof dazu. Gerade das Hinabsteigen in Bäumen finde ich einen validen Anwendungsfall für Rekursion.
 
Rein iterativ fällt mir jetzt auch keine Lösung ein, so eine Strucktur generisch zu erzeugen, aber mit Rekursion gehts:
Java:
void createTree(int elements,Node parent, int ebenen)
{
    if(ebenen<=0) return;
    for(int i=0;i<elements;i++) {
        Node tmp=new Node(parent);
        createTree(elements,tmp,ebenen-1);
    }
}

//Beispielhafter Aufruf für deinen Tree:
createTree(2,root,3);
 
Ich verwende ja ungern LOL, aber diesmal wirklich LOL!

nille hat mich auf die Idee gebracht, dass es rekursiv geht (hatte irgendwie im Kopf das man rekursives immer iterativ machen kann, aber iteratives nicht immer rekursiv, deswegen hatte ich den Gedanken eben irgendwie verworfen).

Habe dann aber nochmal drüber nachgedacht, wollte posten. Sehe das jemand anderes noch geantwortet hat und siehe da: Die Lösung ist praktisch genau das, worauf ich auch gekommen bin. Fast sogar die gleiche Variabeln Bezeichnung 🙂

Meine Lösung

Java:
	public void generateSubNodes(int n, int level, Node parent){
		
		if(level > 0){	
			level--;
			for(int i = 0; i < n; i++){
				Node temp = new Node(parent);
				generateSubNodes(n, level, temp);
			}
		}
	}

Auf jeden Fall danke euch beiden!
 
Zuletzt bearbeitet:

Zurück
Oben