J
JblueG
Gast
Hallo zusammen,
ich habe folgende Baumstruktur
-OberElement
_____- Zelle
__________-Zelle
________________-Zelle
________________-Zelle
__________-Zelle
________________-Zelle
________________-Zelle
______________________-Zelle
______________________-Zelle
__________-Zelle
Die Klasse Zelle hat dabei ein Attribut, zB boolean gelb und jeweils eine Liste von sich selbst, in der
Objekte drin sein können oder sie kann auch leer sein.
Nun möchte ich über den Baum iterieren und mir dabei alle Zellen, wo gelb mit true belegt ist einsammeln und in eine neue Liste packen.
Irgendwie funktionieren aber alle meine Versuche nicht.
ZB. 1. Möglichkeit, hier gebe ich zusätzlich zur Einsammel-Liste immer die List von Kinder-Zellen mit:
oder 2. Möglichkeit, hier gebe ich zusätzlich zu EinsammelListe die Eltern-Zelle mit
oder die 3. Möglichkeit, da definiere ich die Methode als Klassenmethode der Klasse Zelle und
rufe sie von der Main aus auf
die Klassenmethode sieht wie folgt aus:
nichts davon funktioniert so wie ich es will, hoffe mir kann jemand helfen
das Problem ist irgendwie, dass im Rekursionsvorgang ich immer weiter nach unten komme im Baum sprich ich komme über das erste ElternElement zu seinem ersten KindElement und dann zum ersten KindElement davon bis ich ganz unten bin aber dann geht es nicht mehr weiter :-s
ich habe folgende Baumstruktur
-OberElement
_____- Zelle
__________-Zelle
________________-Zelle
________________-Zelle
__________-Zelle
________________-Zelle
________________-Zelle
______________________-Zelle
______________________-Zelle
__________-Zelle
Die Klasse Zelle hat dabei ein Attribut, zB boolean gelb und jeweils eine Liste von sich selbst, in der
Objekte drin sein können oder sie kann auch leer sein.
Nun möchte ich über den Baum iterieren und mir dabei alle Zellen, wo gelb mit true belegt ist einsammeln und in eine neue Liste packen.
Irgendwie funktionieren aber alle meine Versuche nicht.
ZB. 1. Möglichkeit, hier gebe ich zusätzlich zur Einsammel-Liste immer die List von Kinder-Zellen mit:
Java:
public static void main(String[] args) {
OberElement oberElement = new OberElement();
List<Zelle> gelbeZellen = new ArrayList<Zelle>();
gelbeZellen = listeGelbeZellenAuf(gelbeZellen, oberElement.getZelle().getZellen());
gebeListeGelbeZellenAus(gelbeZellen);
}
private static List<Zelle> listeGelbeZellenAuf(List<Zelle> gelbeZellen,
List<Zelle> zellen) {
for (Zelle zelle : zellen) {
if (zelle.isGelb()) {
gelbeZellen.add(zelle);
}
if (!(zelle.getZellen() == null || zelle.getZellen().size() == 0)) {
listeGelbeZellenAuf(gelbeZellen, zelle.getZellen());
}
}
return gelbeZellen;
}
oder 2. Möglichkeit, hier gebe ich zusätzlich zu EinsammelListe die Eltern-Zelle mit
Java:
public static void main(String[] args) {
OberElement oberElement = new OberElement();
List<Zelle> gelbeZellen = new ArrayList<Zelle>();
gelbeZellen = listeGelbeZellenAuf(gelbeZellen, oberElement.getZelle());
gebeListeGelbeZellenAus(gelbeZellen);
}
private static List<Zelle> listeGelbeZellenAuf(List<Zelle> gelbeZellen,
Zelle zelle) {
if (zelle.isGelb()) {
gelbeZellen.add(zelle);
}
for (Zelle zelleKind : zelle.getZellen()) {
listeGelbeZellenAuf(gelbeZellen, zelleKind);
}
return gelbeZellen;
}
oder die 3. Möglichkeit, da definiere ich die Methode als Klassenmethode der Klasse Zelle und
rufe sie von der Main aus auf
die Klassenmethode sieht wie folgt aus:
Java:
public List<Zelle> getGelbeZellen(List<Zelle> gelbeZellenList) {
if (this.gelb) {
gelbeZellenList.add(this);
}
if (!(this.getZellen() != null || this.getZellen().size() == 0)) {
for (Zelle zelleChild : this.getZellen()) {
zelleChild.getGelbeZellen(gelbeZellenList);
}
}
return gelbeZellenList;
}
nichts davon funktioniert so wie ich es will, hoffe mir kann jemand helfen
das Problem ist irgendwie, dass im Rekursionsvorgang ich immer weiter nach unten komme im Baum sprich ich komme über das erste ElternElement zu seinem ersten KindElement und dann zum ersten KindElement davon bis ich ganz unten bin aber dann geht es nicht mehr weiter :-s
Zuletzt bearbeitet von einem Moderator: