Schon wieder Rekursionsproblem

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

JohnDoe_1960

Neues Mitglied
Da du die Referenz als Parameter mitgibst und auf dem Objekt mit "add" arbeitest, brauchst du keine Zuweisung am Schluss vorzunehmen.

Versuch es mal so:

Java:
public class App {
    public static void main(String[] args) {
        Wurzel w = new Wurzel();
        List<Leaf> gelbeLeafs = new ArrayList<Leaf>();
        
        addYellowLeafsToList(gelbeLeafs, w.getLeafs());
    }

    private static void addYellowLeafsToList(List<Leaf> gelbeLeafs, List<Leaf> leafs) {
        for (Leaf l : leafs) {
            // Das Blatt selbst adden
            if (l.isGelb()) {
                gelbeLeafs.add(l);
            }
            // Dessen Kinder prüfen
            addYellowLeafsToList(gelbeLeafs, l.getLeafs());
        }
    }
}
 
J

JblueG

Gast
Das Problem hat sich erledigt...der Baum wurde durch eine vorher aufgerufene Methode so verändert, dass ich dachte es funktioniert nicht, obwohl es eigentlich richtig war.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B ja ja schon wieder einer mit einer public static void main(string[] args) Frage... Java Basics - Anfänger-Themen 8
D Schon wieder double -.- Java Basics - Anfänger-Themen 4
L Und schon wieder :=( Java Basics - Anfänger-Themen 3
V Schon wieder ein kleines problem...dieses mal mit do-while loop Java Basics - Anfänger-Themen 9
C jar als Applet einbinden will schon wieder nicht Java Basics - Anfänger-Themen 7
T schon wieder ausführbare .jar-dateien Java Basics - Anfänger-Themen 2
D was ist denn nun schon wieder? Einfaches JSP. Java Basics - Anfänger-Themen 6
W Schon wieder Taschenrechner Java Basics - Anfänger-Themen 13
F Schon wieder replace Java Basics - Anfänger-Themen 7
L Schon wieder ClassLoader bzw. Classpath :-( Java Basics - Anfänger-Themen 3
S Schon wieder ein Problem - diesmal sortieren Java Basics - Anfänger-Themen 8
G Compiler hängt schon wieder Java Basics - Anfänger-Themen 14
_user_q Timer - ScheduledExecutorService wird schon vorher beendet Java Basics - Anfänger-Themen 5
berserkerdq2 Hashmap, wie prüfe ich ob ein Key schon existiert Java Basics - Anfänger-Themen 19
nbergmann eclipse schon mit "HalloWelt" unverständlich. Java Basics - Anfänger-Themen 4
Naxon89 Threads Android AysncTask => Überprüfen, ob ein Ergebniss schon vorliegt Java Basics - Anfänger-Themen 5
K Wie kontrolliere ich ob ich die Zahl in meinem Array schon hab? Java Basics - Anfänger-Themen 9
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
M Suchfunktion schon bei Teilen des Wortes Java Basics - Anfänger-Themen 4
M Aus Datei auslesen und untersuchen ob diese Zeile schon vorhanden ist Java Basics - Anfänger-Themen 3
N kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 1
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 13
TomatenBrot447 Mit toString eine Ausgabe liefern wie in einer schon implementierten Methode ? Java Basics - Anfänger-Themen 1
I Hilfe beim löschen schon Buchstaben. Java Basics - Anfänger-Themen 4
N Dynamisch erzeugtes Label wird nicht angezeigt, TextField schon Java Basics - Anfänger-Themen 1
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
C Check ob eine HashMap schon existiert Java Basics - Anfänger-Themen 16
C OOP Erstellen eigener Objekte die es schon gibt "schlau"? Java Basics - Anfänger-Themen 3
M Ist die Hamcrest Bibliothek auch schon in Junit 4.11 verfügbar? Java Basics - Anfänger-Themen 1
V relativer Pfad geht nicht, absolut schon? Java Basics - Anfänger-Themen 3
S Threads Thread wenn extends schon vergeben Java Basics - Anfänger-Themen 8
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
K String kommt schon in Vector vor? Java Basics - Anfänger-Themen 36
S A* Path Algorithmus in Java schon vorhanden Java Basics - Anfänger-Themen 3
M In Netbeans kein Problem, im Terminal schon Java Basics - Anfänger-Themen 3
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
M Kein Sound in der .jar, davor schon Java Basics - Anfänger-Themen 6
Luk10 Serialisierung bei schon vorhandener Datei Java Basics - Anfänger-Themen 15
H "Adressbuch" erstellen - Problem schon bei Datumsüberprüfung Java Basics - Anfänger-Themen 9
A Aufruf einer externen schon laufenden Anwendung Java Basics - Anfänger-Themen 3
K kein Sound beim Öffnen der jar-Datei, in Eclipse schon Java Basics - Anfänger-Themen 2
G integer schon initalisiert Java Basics - Anfänger-Themen 11
L beim ersten compilen schon erste probleme Java Basics - Anfänger-Themen 8
A Fehler schon bei kleinigkeiten Java Basics - Anfänger-Themen 9
S kann man das kürzer schreiben? bzw gibts dafür schon was? Java Basics - Anfänger-Themen 6
G Schon die Installation nicht hinbekommen ? Java Basics - Anfänger-Themen 4
S ich stör schon widr wegen meine gui Java Basics - Anfänger-Themen 2
M imageicon aus jar (ja hab die suchfunktion schon benutzt :)) Java Basics - Anfänger-Themen 2
G Button schon gedrückt wenn "mouseOver" Java Basics - Anfänger-Themen 3
B schon beim einsteiger-beispiel durchgefallen. Java Basics - Anfänger-Themen 2
B schon mal mit JavaBeans Activation Framework gearbeitet? Java Basics - Anfänger-Themen 2
S Schon jetzt problem =(=( Java Basics - Anfänger-Themen 51
R Abfragen, ob schon ein Eintrag in der HashMap steht Java Basics - Anfänger-Themen 11
G wenn auch schon oft gefragt (Konstruktor , Instanzen , usw) Java Basics - Anfänger-Themen 6
DrahtEck Schleife soll wieder da anfangen wo ich es möchte ! Java Basics - Anfänger-Themen 17
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
W In alten Code zurück- und dort wieder zurechtfinden? Java Basics - Anfänger-Themen 17
I Passwort in Datenbank speichern um später wieder auszulesen Java Basics - Anfänger-Themen 5
Temsky34 Wie bekomme ich dieses Java-Warning wieder weg? Java Basics - Anfänger-Themen 2
T j.u.Scanner(Sys.in).nextLine() wieder schließen? Java Basics - Anfänger-Themen 5
f3mys Objektwerte in Liste speichern und wieder abrufen Java Basics - Anfänger-Themen 23
O Text mit Regex trennen und wieder zusammenbauen Java Basics - Anfänger-Themen 5
Naxon89 Input/Output Ein PDF in einem BLOB umwandeln um ihn dann als PDF wieder anzuzeigen Java Basics - Anfänger-Themen 3
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
MichelNeedhelp Brauche zu diesem Labyrinth ein Skript? Der Hamster soll im Urzeigersinn das ganze Labyrinth abgehen und wieder an seinem Ursprungsplatz sein. Java Basics - Anfänger-Themen 40
D Codeblöcke, die immer wieder im Programmverlauf benötigt werden Java Basics - Anfänger-Themen 5
TimoN11 Array -> Schleife wieder von vorne durchlaufen lassen Java Basics - Anfänger-Themen 1
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
M Regex Probleme (mal wieder) Java Basics - Anfänger-Themen 3
J Selektiertes Element von jComboBox zwischenspeichern und wieder einsetzen Java Basics - Anfänger-Themen 0
S Nutzereingabe splitten und in string array wieder ausgeben. Java Basics - Anfänger-Themen 1
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
N Wie kann ich einen String wieder zusammensetzen und ausgeben lassen? Java Basics - Anfänger-Themen 9
C Array-Eintrag wieder auf Null setzen Java Basics - Anfänger-Themen 3
W Verschachtelte Objekte wieder auspacken Java Basics - Anfänger-Themen 3
M Array immer wieder um ein Element erweitern Java Basics - Anfänger-Themen 6
CptK Methoden Event bei gedrückter Maustaste immer wieder ausführen Java Basics - Anfänger-Themen 1
CptK Klassen Event bei gedrückter Maus immer wieder mit Pause ausführen Java Basics - Anfänger-Themen 2
J Geld speichern und wieder auslesen Java Basics - Anfänger-Themen 10
M JTextField blitzt immer wieder nur auf Java Basics - Anfänger-Themen 12
CptK Datentypen Verdrehte Wörter wieder herstellen Java Basics - Anfänger-Themen 21
J Timer bauen, Main Methode immer wieder neu starten Java Basics - Anfänger-Themen 13
I Methoden Schleife immer wieder durchlaufen lassen Java Basics - Anfänger-Themen 15
F Immer wieder gleiche Zufallszahl? Java Basics - Anfänger-Themen 4
M Schleifenergebnis in selbiger wieder verwenden Java Basics - Anfänger-Themen 7
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
L jar, class, java und wieder zurück Java Basics - Anfänger-Themen 8
M aus Fenster anderes Fenster öffnen und wieder umgekehrt Java Basics - Anfänger-Themen 5
J Fenster wieder unsichtbar machen Java Basics - Anfänger-Themen 2
J Auslesen/speichern und wieder einlesen Java Basics - Anfänger-Themen 7
S Sound stoppen und nach Pause wieder abspielen Java Basics - Anfänger-Themen 6
T while schleife starten , beeneden und wieder Starten Java Basics - Anfänger-Themen 8
I Zähler, der erst wieder zählt nachdem Pixel wieder andere Farbe hat Java Basics - Anfänger-Themen 2
B javax.ejb.Timer wieder starten? Java Basics - Anfänger-Themen 0
N Methode auslagern mal wieder Java Basics - Anfänger-Themen 8
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
Bluedaishi for schleife um Dateien wieder zusammen zu fügen Java Basics - Anfänger-Themen 11
I SHA512 verschlüsseln und dann wieder auslesen? Java Basics - Anfänger-Themen 35
F Timer abbrechen und wieder starten Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben