Arboles en java

Respuesta de
a
Usuario
Hola, quiero recorrer un árbol en java de modo que me devuelva los nodos que aun no hayan sido analizados, sin embargo, no lo puedo hacer recursivamente (algo como esto)

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


Lo que pasa es que necesito obtener esos elementos desde fuera, ¿qué puedo hacer?
Usuario
Muchas gracias por la respuesta, por supuesto que me ha servido.
Avatar
Experto
Espero que esto te sirva:

/************************************************************
* Metodo: concatenarInOrden( Nodo p ), StringBuffer. *
* Descripcion: crea una variable StringBuffer c en la cual *
* son concatenadas las infos de los nodos del *
* arbol en el siguiente orden: hijo izquierdo *
* , padre e hijo derecho. *
* Proposito: concatenar los nodos del arbol en in-orden. *
************************************************************/
private StringBuffer concatenarInOrden ( Nodo p ) {
StringBuffer c = new StringBuffer("");
if ( p!=null ) {
c = c.append( concatenarInOrden( p.getIzquierda() ) );
c = c.append( p.getInfo()+"," );
c = c.append( concatenarInOrden( p.getDerecha() ) );
}
return c;
}

/************************************************************
* Metodo: concatenarPreOrden( Nodo p ), StringBuffer. *
* Descripcion: crea una variable StringBuffer c en la cual *
* son concatenadas las infos de los nodos del *
* arbol en el siguiente orden: hijo izquierdo *
* , hijo derecho y padre. *
* Proposito: concatenar los nodos del arbol en pre-orden. *
************************************************************/
private StringBuffer concatenarPreOrden ( Nodo p ) {
StringBuffer c = new StringBuffer("");
if ( p!=null ) {
c = c.append( concatenarInOrden( p.getIzquierda() ) );
c = c.append( concatenarInOrden( p.getDerecha() ) );
c = c.append( p.getInfo()+"," );
}
return c;
}