Hallo alle zusammen!
Hier mein Problem:
Ich habe eine Klasse Tree. Diese erbt von LinkedList<Tree>.
Ein Objekt Tree kann 2 verschiedene Typen annehmen.
DEFAULT und ALTERNATIVE. Wenn der Tree vom Typ ALTERNATIVE ist, enthält er mindestens 2 ALTERNATIVE's
Das kann auch geschachtelt passieren. Hier eine Darstellung:
Hier ein Beispiel
Jetzt soll mein Objekt aus dem Oben gezeigten Beispiel viele "SingleLevel" Darstellungen machen. D.h. es soll viele neue Tree's erstellen die alle Kombinationen der DEFAULT Objekte darstellen
Für obiges Beispiel wäre das:
Habt Ihr eine Idee, wie ich das mit einem Algorithmus machen könnte?
Das schreit eigentlich schon nach Rekursion, aber ich komm grad nicht drauf.
Hier noch die sehr Klasses selbst:
Hier mein Problem:
Ich habe eine Klasse Tree. Diese erbt von LinkedList<Tree>.
Ein Objekt Tree kann 2 verschiedene Typen annehmen.
DEFAULT und ALTERNATIVE. Wenn der Tree vom Typ ALTERNATIVE ist, enthält er mindestens 2 ALTERNATIVE's
Das kann auch geschachtelt passieren. Hier eine Darstellung:
Hier ein Beispiel
Code:
Tree: DEFAULT 1
Tree: DEFAULT 2
Tree: ALTERNATIVE
Tree: DEFAULT 3
Tree: ALTERNATIVE
Tree: DEFAULT 4
Tree: DEFAULT 5
Jetzt soll mein Objekt aus dem Oben gezeigten Beispiel viele "SingleLevel" Darstellungen machen. D.h. es soll viele neue Tree's erstellen die alle Kombinationen der DEFAULT Objekte darstellen
Für obiges Beispiel wäre das:
Code:
Tree 1:
Tree: DEFAULT 1
Tree: DEFAULT 2
Tree: DEFAULT 3
Tree 2:
Tree: DEFAULT 1
Tree: DEFAULT 2
Tree: DEFAULT 4
Tree 3:
Tree: DEFAULT 1
Tree: DEFAULT 2
Tree: DEFAULT 5
Habt Ihr eine Idee, wie ich das mit einem Algorithmus machen könnte?
Das schreit eigentlich schon nach Rekursion, aber ich komm grad nicht drauf.
Hier noch die sehr Klasses selbst:
Java:
package de.unicate;
import java.util.LinkedList;
@SuppressWarnings("serial")
public class Tree extends LinkedList<Tree> {
public enum Type {
DEFAULT,
ALTERNATIVE
}
private Type _type;
public Type getType() {
return _type;
}
public Tree(Type type) {
_type = type;
}
public Tree convertTree() {
// to collect all the alternatives
Tree root = new Tree(Type.ALTERNATIVE);
// ****?
return root;
}
}
Zuletzt bearbeitet: