Ich habe eine Node
Klasse. Es hat eine children
ArrayList. Diese Liste besteht auch aus Knoten. Und diese Knoten haben Kinderlisten und so weiter.Alle Unterlisten in einer Liste rekursiv löschen
Grundsätzlich ist es ein Baum in etwas nicht so bequemer Form. Nehmen wir an, ich möchte einige Node
daraus löschen. Also, wie alle Child-Listen rekursiv gelöscht werden?
Ich habe eine hasChildren()
Methode, die zurückgibt, wenn angegeben Knoten hat Kinder, ich denke, es muss mir helfen, aber kann noch nicht herausfinden, wie es ist. Ich habe auch getChildren()
Methode, die Liste der Kinder zurückgibt.
Hier ist etwas von meinem Code, aber es ist überall falsch.
public void removeChild()
{
while(hasChildren())
{
getChildren();
removeChild();
}
children.clear();
}
Wenn Sie eine Methode zum Zurückgeben des ersten untergeordneten Elements haben, können Sie diese rekursive Lösung verwenden. 'public static void removeChilds (Knotenknoten) { while (node.hasChildren()) node.removeChild (node.getFirstChild()); } ' –
Wahrscheinlich kein Duplikat, aber könnte Ihre Frage trotzdem beantworten - [Wie kann ich eine Methode für jedes Element einer Liste aufrufen?] (Http://stackoverflow.com/questions/7221833/how-cani-i- call-a-method-on-jedes-Element-einer-Liste) Auch, wenn (hasChildren()) ', nicht' while (hasChildren()) ', nicht, dass Sie wirklich brauchen, weil jede Lösung in Der obige Link sollte in einer leeren Liste gut funktionieren. – Dukeling
@RajithPemabandu Was meinst du mit dem ersten Kind? Wird 'node.getChildren.get (0)' in diesem Fall nicht funktionieren? Das wird nur alle Kinder der ersten Stufe entfernen, irre ich mich? –