Поездка общих деревьев с чистым возвратом

Вчера участвуйте в дискуссии, если возможно, или не пробегать общее дерево с чистым возвратом, не используя повторных структур как for, while и do while. Договорный способ, если он приносит повторение из-за каждого из Ваших детей. Что они думают?

-3
задан 01.09.2019, 23:04
1 ответ

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);
}

}

0
ответ дан 04.09.2019, 07:52