Вчера участвуйте в дискуссии, если возможно, или не пробегать общее дерево с чистым возвратом, не используя повторных структур как for, while и do while. Договорный способ, если он приносит повторение из-за каждого из Ваших детей. Что они думают?
package main;
import java.util. List;
import Возврат. Узел;
public class ProjectMain {{114]
public static void main(String[] args) {
//Nodo 4
Nodo nodo4=new Nodo();
nodo4.setValorRaiz("Nodo 4");
//Nodo 5
Nodo nodo5=new Nodo();
nodo5.setValorRaiz("Nodo 5");
//Nodo 1
Nodo nodo1=new Nodo();
nodo1.setValorRaiz("Nodo 1");
nodo1.getNodos().add(nodo4);
nodo1.getNodos().add(nodo5);
//Nodo 6
Nodo nodo6=new Nodo();
nodo6.setValorRaiz("Nodo 6");
//Nodo 2
Nodo nodo2=new Nodo();
nodo2.setValorRaiz("Nodo 2");
nodo2.getNodos().add(nodo6);
//Nodo 3
Nodo nodo3=new Nodo();
nodo3.setValorRaiz("Nodo 3");
//Nodo 0
Nodo nodo0=new Nodo();
nodo0.setValorRaiz("Nodo 0");
nodo0.getNodos().add(nodo1);
nodo0.getNodos().add(nodo2);
nodo0.getNodos().add(nodo3);
//Comenzar recorrido
goTree(nodo0);
}
public static void goTree (Nodo nodo) {
if(nodo!=null && nodo.getNodos()!=null) {
System.out.println(nodo.getValorRaiz());
find(nodo.getNodos(), 0);
}
}
public static void find(List<Nodo> list, int pos)
{
if(list!=null && list.size()!=0 && pos<list.size()) {
//Mostrando visita en profundidad al nodo
System.out.println(list.get(pos).getValorRaiz());
//Visitando el nodo hijo
visitNodo(list.get(pos));
//Llamada recursiva para cada uno de los hermanos
find(list,pos+1);
}
}
public static void visitNodo(Nodo nodo)
{
//Volviendo al proceso con el hijo
find(nodo.getNodos(),0);
}
}