Hilfestellellung bei Rekursivem Löschen

Otz

Bekanntes Mitglied
Hallo zusammen,

ich bin gerade dabei einen kleine Anwenudung zu implementieren. Diese verfügt zur Speicherung bestimmter Daten über eine Baumstruktur. siehe Anhang

Jeder der Knoten beinhaltet eine Liste mit seinen Kinderknoten.

Wie kann ich jetzt am besten einen gesammten Pfad aus der Datenstruktur entfernen.
Und zwar soll der Pfad nicht bis zur Wurzel gelöscht werden, sondern nur bis zu dem Knoten, der mindestens 2 Kindknoten besitzt. In meiner Skizze ist dies der Knoten 2 und die rot-markierten Knoten sind die zu löschenden.

Ich hoffe ich versteht mein Vorhaben und könnt mir helfen :D

Grüße
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    7,2 KB · Aufrufe: 23

JStein52

Top Contributor
Ganz verstehe ich noch nicht was du vorhast, der Algorithmus wäre also: Lösche mir einen bestimmten Knoten und alles darunter, darüber aber nur bis zum nächsten Knoten der noch andere Unterknoten enthält ???
 

Otz

Bekanntes Mitglied
ok, ich muss wohl etwas ausholen...

in dem baum habe ich bestimmte string teile abgespeichert.
z.b.

String 1: Hallo du bla bla
String 2: Hallo du blub blub blub

wenn ich jetzt diese beide strings in meinen baum einfüge, ergibt sich genau die struktur des oben angehängten bildes.
nun möchte ich string 2 aus meinem baum entfernen. hierzu kann ich jedoch nicht den ganzen string rauswerfen, da sonst string 1 nicht mehr vollständig ist. deshalb entferne ich jetzt alle knoten des unteren pfades, bis zu dem knotenm, der mindestens 2 kinder besitzt. in diesem fall der knoten mit dem string "du". in diesem lösche ich jedoch die referenz auf den kindknoten "blub"

kann man es jetzt besser verstehen?
 

Times

Bekanntes Mitglied
Hm... ich hoffe ich bin nicht der einzige, sonst komm ich mir doof vor, aber ich verstehe es immernoch nicht.
Vielleicht kannst du ein Anwendungsbeispiel sagen, wofür du es genau brauchst, was willst du erreichen oder ein Beispiel ohne die Wörter:"Test, Hallo, bla, blub"... irgendetwas wodrunter man sich auch was vorstellen kann.
 

JStein52

Top Contributor
So rein intuitiv verstehe ich was du machen willst auch wenn ich die Speicherstruktur noch nicht ganz durchschaue.
Wie würden z.B. folgende Strings abgespeichert:

String 1: Hallo du bla bla Freund
String 2: Hallo du blub blub blub Freund
 

Otz

Bekanntes Mitglied
So rein intuitiv verstehe ich was du machen willst auch wenn ich die Speicherstruktur noch nicht ganz durchschaue.
Wie würden z.B. folgende Strings abgespeichert:

String 1: Hallo du bla bla Freund
String 2: Hallo du blub blub blub Freund

sorry das ich mich so spät melde. hab eben erst wieder etwas zeit gefunden...

das wort freund wird einfach bei jedem der beiden pfade aus meiner zeichnung angefügt. also einmal als kind vom knoten 4 UND einmal als kind von knoten 7

also es werden keine netze gebildet...
 
Zuletzt bearbeitet:

Otz

Bekanntes Mitglied
currentNode ist die wurzel des baumes
stringparts ist eine arraylist mit mehrere wörtern als string
Code:
private void remove(TreeNode currentNode, List<String> stringparts) {
        for (TreeNode node : currentNode.getChilds()) {
            //alle kinder eines knoten durchlaufen
            if (node.getValue().equals(stringparts.get(0))) {
                //kinde ueberpruefen ob dieses mit dem übergeben string uebereinstimmt
                if (node.getChilds().get(0).getChilds().isEmpty()) {
                    // wenn das kind des aktuellen knoten ein blatt ist --> loeschen
                    node.getChilds().remove(0);
                } else {
                    //kind des aktuellen knoten ist kein blatt --> rekursiver aufruf
                    remove(node, stringparts.subList(1, stringparts.size()));
                  
                    //blatt wurde erreicht und geloescht
                    //alle kindknoten, die keine kinder mehr haben entfernen
                    ArrayList<TreeNode> tempList = new ArrayList<TreeNode>();
                    for(TreeNode tn : node.getChilds()){
                        if(tn.getChilds().size() > 0){
                            tempList.add(tn);
                        }
                    }
                    node.setChilds(tempList);
                }
            }
        }
    }
 

JStein52

Top Contributor
Was genau geht denn deiner Meinung nach schief ? Ich sehe z.B. dass du wenn das Kind des aktuellen Knotens ein Blatt ist dieses löschst, ohne Rücksicht auf seinen Value ?? Ich kann nicht beurteilen ob das richtig ist scheint mir aber falsch. Und du gehst auch immer davon aus, dass der aktuelle Knoten nur ein Kind hat ( ...get(0)... ...remove(0)...

Aber vielleicht habe ich deine Speicherung auch immer noch nicht verstanden und denke zu kompliziert. Wie werden denn die folgenden drei Strings abgespeichert ?

1. Hugo ist froh und lacht
2. Hugo ist froh und munter
3. Hugo will essen

Gibt es da einen Bau mit dem gemeinsamen Knoten "Hugo" ? Und verzweigt der eine Teil weiter unten wieder bei dem Knoten "und" ???
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Problem mit einem rekursivem FloodFill Algorithmus Java Basics - Anfänger-Themen 62
I Listendublette bei rekursivem Komponentenaufruf Java Basics - Anfänger-Themen 4
W Multiplikation mit rekursivem Aufruf Java Basics - Anfänger-Themen 17
C Deklaration einer Variablen in einem rekursivem Aufruf Java Basics - Anfänger-Themen 5
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Array mit Methode löschen Java Basics - Anfänger-Themen 2
K Wie kann ich "enter" von der Console in Eclipse löschen? Java Basics - Anfänger-Themen 2
E Objekte löschen Java Basics - Anfänger-Themen 9
AkiJou Zeile in 2d Array löschen Java Basics - Anfänger-Themen 2
berserkerdq2 An selbst ersteller txt Datei immer Text dranhängen, ohne den vorherign Text zu löschen Java Basics - Anfänger-Themen 8
berserkerdq2 Überprüfen ob eine Schreibberechtigung auf ein file exisitert bzw. ob man dieses file löschen kann, wie? Java Basics - Anfänger-Themen 9
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
G Bitte meinen Account löschen Java Basics - Anfänger-Themen 1
javapingu Jeglichen Inhalt einer Textdatei nach Zeile n löschen Java Basics - Anfänger-Themen 8
W Beitrag löschen Java Basics - Anfänger-Themen 1
O Doppelt verkette Liste Element löschen Java Basics - Anfänger-Themen 15
B Objekte, bspw. konkret Arraylists,manuell aus Speicher löschen? Java Basics - Anfänger-Themen 70
M Abfrage j/n und Bildschirm löschen Java Basics - Anfänger-Themen 3
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
L Methoden ArrayList Werte hinzufügen und löschen Java Basics - Anfänger-Themen 32
A Löschen von Leerzeichen in einem char array ohne methoden Java Basics - Anfänger-Themen 6
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
V_Fynn03 Lineare Datenstrukturen Element löschen? Java Basics - Anfänger-Themen 2
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
S Windows printerqueue mit Java löschen Java Basics - Anfänger-Themen 3
M Objekt mit eindeutiger ID löschen, das nächste Objekt hat dann diese ID Java Basics - Anfänger-Themen 5
M Image löschen Java Basics - Anfänger-Themen 2
H Objekt aus einem Array löschen Java Basics - Anfänger-Themen 1
O Element aus Array löschen Java Basics - Anfänger-Themen 5
steven789hjk543 Kann ich manche Versionen des jdk löschen? Java Basics - Anfänger-Themen 6
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
E Elemente aus Liste löschen Java Basics - Anfänger-Themen 5
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
T Löschen in doppelt verketteter Liste Java Basics - Anfänger-Themen 1
A Größten Eintrag aus Binärbaum löschen Java Basics - Anfänger-Themen 4
J am Anfang eines String ein Leerzeichen löschen Java Basics - Anfänger-Themen 6
Z Vocale löschen Java Basics - Anfänger-Themen 3
D B-Baum einfügen und löschen Java Basics - Anfänger-Themen 2
J Elemente in Array speichern, löschen, ... Java Basics - Anfänger-Themen 3
D Werte AVL-Baum löschen Java Basics - Anfänger-Themen 2
M Ordner mit Inhalt löschen Java Basics - Anfänger-Themen 7
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
R Datei löschen Java Basics - Anfänger-Themen 3
V Durch Methode Objekt löschen Java Basics - Anfänger-Themen 2
P Verbindung von Zwei Kreisen löschen ! Java Basics - Anfänger-Themen 6
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
I Hilfe beim löschen von Buchstaben. Java Basics - Anfänger-Themen 1
I Hilfe beim löschen schon Buchstaben. Java Basics - Anfänger-Themen 4
J Kann eine .jar sich selber Löschen? Java Basics - Anfänger-Themen 5
D Projekte + Datum + löschen Java Basics - Anfänger-Themen 11
B Methoden Element aus einem Array löschen, Rest nach vorne verschieben? Java Basics - Anfänger-Themen 4
K Element in ArrayList löschen ohne Index zu verschieben Java Basics - Anfänger-Themen 2
N Generischer Binärbaum - löschen Java Basics - Anfänger-Themen 1
P Vector durchsuchen und Elemente löschen Java Basics - Anfänger-Themen 4
G zeichen einer Zeile löschen Java Basics - Anfänger-Themen 4
R [Erledigt]Fehler beim löschen von einzelnen Buchstaben aus StringBuilder Java Basics - Anfänger-Themen 1
F Element aus LinkedList löschen Java Basics - Anfänger-Themen 3
B lanterna einzelne Zeichen aus dem Terminal löschen Java Basics - Anfänger-Themen 0
S jList --> Array einfügen und Liste löschen Java Basics - Anfänger-Themen 5
O Löschen lange pfade...Fehler? Java Basics - Anfänger-Themen 1
O Eclipse Liste Löschen Java Basics - Anfänger-Themen 5
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8
K Klassen Objekte löschen Java Basics - Anfänger-Themen 11
B Methoden BinärBaum als String Knoten löschen Java Basics - Anfänger-Themen 5
D String in Datei suchen und löschen Java Basics - Anfänger-Themen 2
S Grafik löschen Java Basics - Anfänger-Themen 10
L Daten aus Array Feld löschen Java Basics - Anfänger-Themen 2
X Erste Schritte Großschreibung löschen Java Basics - Anfänger-Themen 5
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
I Zwei Listen: Wenn nicht vorhanden löschen Java Basics - Anfänger-Themen 4
E Arrayeintrag nach Index löschen und Array kürzen Java Basics - Anfänger-Themen 3
thet1983 g.Graphics löschen? Java Basics - Anfänger-Themen 1
GadgetSofa .txt Datei erstellen und gleich wieder Löschen? Java Basics - Anfänger-Themen 12
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
M Löschen von Objekten während Iteration über Liste Java Basics - Anfänger-Themen 9
M Java Datei soll sich selbst löschen Java Basics - Anfänger-Themen 8
J Baum Knoten löschen Java Basics - Anfänger-Themen 10
T Textdatei Zeile löschen? Java Basics - Anfänger-Themen 4
I Element löschen aus der Liste Java Basics - Anfänger-Themen 2
S Einen Eintrag im Array löschen? Java Basics - Anfänger-Themen 11
J ArrayList Objekt löschen Java Basics - Anfänger-Themen 6
M Variablen Daten aus Array löschen Java Basics - Anfänger-Themen 2
B Klassen Obejekte in Java "Löschen" Java Basics - Anfänger-Themen 11
M ArrayList-Element hinzufügen u. löschen Java Basics - Anfänger-Themen 2
B Ordner leeren/löschen Java Basics - Anfänger-Themen 5
I .txt Datei Zeile löschen. Java Basics - Anfänger-Themen 13
R Doppelte löschen Java Basics - Anfänger-Themen 6
J Klick auf Button -> JFrame öffnet sich erneut. & Datei lässt sich nicht löschen Java Basics - Anfänger-Themen 7
H Textfeldinhalt löschen nachdem Frame geschlossen wird Java Basics - Anfänger-Themen 8
S Vokale am Ende von Wörtern löschen Java Basics - Anfänger-Themen 7
W Löschen Datenknoten Suchbaum Java Basics - Anfänger-Themen 4
B Object in Array nach Prüfung löschen Java Basics - Anfänger-Themen 13
T Sting -> Array, leere Stellen löschen Java Basics - Anfänger-Themen 6
L Split + Zeilen einer Datei mit bestimmtem Inhalt löschen Java Basics - Anfänger-Themen 23

Ähnliche Java Themen

Neue Themen


Oben