Klasse für Baumstrukturen

AquaBall

Top Contributor
Ich lese nun seit 2 Wochen im Net und Foren, weil ich meine Daten baum-mäßig organisieren muss.

Ist es richtig, dass es für allgemeine Bäume keine Standard-Classen in Java gibt!?!

Array/Set/Hash ist ja grundlegen falsch, und alles was ich über Trees/TreeSet finde, bezieht sich immer auf Binärbaum mit Sortierung. (kann ich aber nicht brauchen.)

Muss ich einen normale Baumstruktur wirklich komplett manuell ausprogrammieren?
Und wenn ja, wie mach ich dann eine Kopie des Baums?
Da macht mir die Rekursion große Probleme.
(Ich kann zwar in einem bestehenden Baum leicht 'rumklettern', weiß dann aber nicht, wo "dieselbe" Stelle im neuen Baum ist.)
 
In Swing gibt es TreeModel und TreeNode, es könnte ggf unter Umständen evtl legitim sein die zu verwenden.
Aber eine Baumstruktur selber zu schreiben ist eigentlich nicht die Welt. Dein Einwand mit der Rekursion habe ich nicht so ganz verstanden.
 
@pro2 Danke, soweit bin ich schon. aber es sind doch sehr viele Details zusätzlich händisch zu behandeln.

@XHelp Swing/JPanel kann ich nicht benutzen, weil ich für Android entwickle, und da bin ich sehr eingeschränkt in der Auswahl.


Zur Zeit kämpfe ich mit einem - zwar lauffähigem, aber etwas wackeligem - Baum, und habe div. Schwierigkeiten.

Wenn ich einen Ast umhänge an eine neue Stelle, ist er dort zwar nach oben und unten richtig einsortiert, kann es aber passieren, dass an der alten Stelle eine "loses Ende" offen bleibt.

Ich hab keine Sicherheit, dass ein Knoten nur von EINEM Ast angesprochen wird. Es ist denkbar (wenn auch nicht zulässig), dass mehrere Äste auf denselben Knoten zeigen.

Rekursion beim Kopieren eines Baums: Ich kann zwar die Struktur schön aufrufen
Java:
// in myBaum 
public void kopieren(myBaum neuer) {
    neuer.daten = this.daten;
    for (myBaum next : this.nachFolger) {
        next.kopieren(liste);
    }
}
Aber
  1. dadurch erzeuge ich ja erst wieder nur einen (nichtzulässigen) Verweis auf das selbe Object,
  2. und außerdem weiß mein 2. Aufruf schon nichtmehr, wohin er die Nachfolger dranhängen soll.
Ich würde irgendetwas brauchen wie eine zw. 2 Bäumen "synchronisierte Rekursion".


Aber ich seh schon, dass ich es wirklich selbst ausprogrammieren muss.
 
Naja, an den 3 Zeilen lässt sich nur Bedingt Sinn/Fehler erkennen. Sieht aber etwas komisch aus: eine void-kopier Methode, mit irgendeiner
Code:
liste
und die Nachfolger von
Code:
neuer
werden gar nicht gesetzt.
Aber ich vermute mal Stark, dass sich fertige und erprobte Strukturen wie Baum in paar Sekunden ergoogeln lassen.
 
Logisch. geb dir schon recht, dass mein (Pseude)Code-Schnipsel-Getippse keinen Anspruch auf Richtigkeit erhebt.

Aber weil ich eben noch nicht weiß, wie's richtig wäre, kann ich ja keinen funktionierenden Code anbieten. (Sonst hätt ich kein Frage mehr.)

Aber ich werd's schon hinkriegen.

PS: Googeln? Die Adresse Google.com ist bei mir schon ganz abgenützt. Auch in vielen Stunden findet man da gar nichts. (Sollte das an meinem ISDN-Modem liegen? 😀)
 
Danke, ist sehr nett gemeint.
Aber so eine Seite schau ich mir im allgemeinen gar nicht genauer an.
(Nach deiner Empfehlung werd ich es in diesem Fall natürlich DOCH machen!)

Aber wenn eine Seite nur reiner Code ist,
ohne auch nur 1 Textzeile dazu,
ohne einen einzigen Kommentar im SorceCode
ohne irgend ein Information um was es geht
dann ist das nur unnötiger Ballast. Ich kann nicht jeden Text in Eclipse kopieren. Projekt anlegen, anpassen, testen, ... Stunden verbraten.
Der schiere Text "Added parent property to Generic Tree Node. Change find and exists to…" ist mir einfach nicht verlockend genug, dass ich aus 213.000.000 Google-Ergebnissen (nach Java Tree) genau daran hängen bleiben würde.

Im Gegenteil: solche Seiten klick ich gar nicht an, wenns auf ersten Blick den Anschein macht es würde nur um Dateidonload gehen.

Das ist keine Kritik an deiner Hilfe, sondern nur Ärger wie nutzlos der Müll im Internet manchmal ist (wenn man kein tolles Forum hat. ;-))

Aber ich werd mich schon durchkämpfen.
Vielen Dank
 

Zurück
Oben