Foro de elhacker.net

Programación => Java => Mensaje iniciado por: BeyBey en 28 Julio 2004, 20:23 pm



Título: Recorrer árbol en Java
Publicado por: BeyBey en 28 Julio 2004, 20:23 pm
Hola a todos y ante todo muchas gracias. Estoy empezando con Java y tengo un problema. El caso es que soy capaz de recorrer un árbol mediante recursividad, mi problema surge cuando en lugar de mostrar el elemento por pantalla, quiero que la funcion lo devuelva. Por ejemplo:

public int preorden(Rama nodo)
{
        int i;
        if (nodo == null)
            return 0;
       
        return nodo.elemento;       
        preorden(nodo.izq);
        preorden(nodo.der);
}

Obviamente no va a funcionar, pero necesito devolver dichos elementos y ademas que los devuelva a partir de la raiz. ¿Cómo lo hago?
Muchas gracias a todos.


Título: Re: Recorrer árbol en Java
Publicado por: Ragnarok en 28 Julio 2004, 23:26 pm
Acostumbrate a poner el código entre las etiquetas de código. A parte de eso la función es bastante interesante, de todas formas si es en java debe ser un método de una clase, puedes declarar un atributo privado de esa clase en el que se almacenen los nodos, simplemente los vas insertando hasta que termines, puedes recorrer el arbol de forma ordenada para insertar los elementos ordenadamente. Sería algo así:

Código:
private int recorre(Rama nodo) {
        if (nodo == null)
            return 0;

        recorre(nodo.izq);
        lista.insertar (nodo.elemento);       
        recorre(nodo.der);
}

Por supuesto tendrías que hacer otro método para que imprima la lista, sería algo así:

Código:
public int preorden (Rama nodo){
   recorre(nodo);
   lista.mostrar();
   return 0;
}

Puede ayudarte si lees algo acerca de bactracking y si encuentras el código del TreeMap de java, si lo encuentras dime donde está porque llevo varios días buscándolo y no lo consigo.

PD: no te acostumbres a que te respondamos con código, en este caso me resultaba más rápido, pero es 1 de cada 1000.


Título: Re: Recorrer árbol en Java
Publicado por: BeyBey en 28 Julio 2004, 23:37 pm
Muchisimas gracias, creo que me va a ser de gran utilidad.
Lo siento por mis errores en el foro pero es que soy novata  :-[, lo apuntaré para otras intervenciones. De nuevo muchas gracias.