Hilfe bei einer rekursiven Methode

Diskutiere Hilfe bei einer rekursiven Methode im Java Basics - Anfänger-Themen Bereich.
B

beta20

Hallo,

ich möchte gerne eine rekursive Methode erstellen.
Das Ziel ist es von einem "Element" alle Kinder zu bekommen. Also sprich alle Elemente, die miteinander verknüpft sind.
Hierzu habe ich eine Liste von den Connections von einem Diagrammodell. Nun gehe ich diese Connections durch und suche die Verbindung.

Das heißt, dass ich mit einem "Element" in the Methode starte, und dann immer wieder darüber iteriere, bis es keine Kinder mehr gibt...
Allerdings scheint, dass der Methodenaufruf noch nicht so ganz passt. Ebenfalls muss irgendwie noch ein Check sein, wenn es kein Kind mehr gibt, weil sonst gebe ich ja wieder eine leere Liste zurück?

Java:
    /**
     * Findet alle ChildElement von einem Element / alle Connections
     *
     */
    public List<Element> findAllChildFromElement(DefaultDiagramModel diagramModel, Element startElement) {

        LOGGER.info("START findAllChildFromElement");

        List<Element> elementList = new ArrayList<Element>();

        for (EndPoint endPoint : startElement.getEndPoints()) {

            // Alle Connections durchgehen, und prüfen, wer diesen Endpoint verwenden als Target
            for (Connection connection : diagramModel.getConnections()) {
                               
                if (connection.getSource().equals(endPoint)) {
                    Element e = findElementByEndpoint(diagramModel, connection.getTarget());
                    elementList.add(e);
                   
                    // Methode nochmals aufrufen
                    elementList = findAllChildFromElement(diagramModel, e);
                }
            }
        }

        LOGGER.info("END findAllChildFromElement");
        return elementList;
    }
Ich verwende diese Klassen:

Kann mir hier jemand helfen?
 
MoxxiManagarm

MoxxiManagarm

Also wenn ich dich richtig verstehe, dann willst du alle zusammenhängende Elemente in der Liste haben. Das ist vergleichbar mit einem Graphen. Belese dich gerne etwas in Graphentheorie. Aus meiner Sicht fehlt dir die Abfrage, welchen Knoten - also welches Element - du bereits besucht hast. Nur wenn du e noch nicht besucht hast fügst (d.h. e existiert nicht in elementList) fügst du e zu elementList hinzu und untersuchst e.

Außerdem hast du mehrere rekursive Aufrufe (durch die Schleife), welche du aber nicht verknüpfst. elementList = findAllChildFromElement(diagramModel, e); sollte vermutlich keine Zuweisung sein, sondern ein addAll
 
Zuletzt bearbeitet:
B

beta20

Hier mal ein Beispiel:
Element "startElement" (im Methodenkopf) ist das rote Element:
Was ich nun möchte ist, dass ich alle grünen Elementen bekommen

 
Thema: 

Hilfe bei einer rekursiven Methode

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben