Recorrido en anchura a árbol binario en Java

  • 01 de agosto de 2007
  • Valoración:
  • 8 Comentarios
  • Java
Implementación en Java para hacer un recorrido en anchura (amplitud) en un árbol binario.
He aquí una implementación en Java para hacer un recorrido en anchura (amplitud) de la estructura de datos denominada árbol binario.

Este código lo cree después de buscar por muchas horas en Google y en ninguna otra página sin éxito. Ninguna de las páginas tenía hecha alguna implementación concreta de este código, solo muestran una idea.

Este código es bastante complicado de entender con pseudocódigo, es más fácil entenderlo mirando algún código ya hecho y estoy seguro que muchos se habrán visto en aprietos a la hora de hacer algún proyecto recorriendo una estructura de árbol binario.

Para hacer un recorrido en anchura, la idea es ir guardando en una cola los hijos del nodo que se están visitando y el siguiente a visitar es el próximo nodo de la cola.

El código se ha comentando para que resulte más sencillo entender el ejercicio.

public void amplitud(NodoArbol a) //SE RECIBE LA RAIZ DEL ARBOL
{
Cola cola, colaAux; //DEFINICIÓN DE 2 VARIABLES DE TIPO COLA
NodoArbol aux; //DEFINICIÓN AUX DE TIPO NODOARBOL

if (a != null) //SI EL ÁRBOL CONTIENE NODOS...
{
cola=new Cola(); //SE INSTANCIA EL OBJETO COLA
colaAux=new Cola(); //SE INSTANCIA EL OBJETO COLAAUX
cola.push(a); //SE INSERTA EL NODOARBOL "A" (RAIZ) COMO PRIMER NODO EN LA COLA
while (cola.colavacia()!=1) //MIENTRAS HAYAN ELEMENTOS EN LA COLA...
{
colaAux.push(aux=cola.pop()); /*EL ELEMENTO EXTRAIDO DE LA COLA PRINCIPAL ES ASIGNADO
A AUX Y A SU VEZ INSERTADO EN LA COLA AUXILIAR*/
if (aux.izq != null) //SI EL HIJO IZQUIERDO DEL NODO ACTUAL EXISTE
{
cola.push(aux.izq); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
if (aux.der!= null) //SI EL HIJO DERECHO DEL NODO ACTUAL EXISTE
{
cola.push(aux.der); //SE INSERTA ESE HIJO COMO ELEMENTO SIGUIENTE EN LA COLA
}
}
colaAux.print(); //POR ÚLTIMO SE IMPRIME LA COLA AUXILIAR
}
}

Autor

Alberto Tigrera

Estudiante de Computación

Comentarios

rene rivera

01/9/2007
HOLA: esta bastante bueno como aprendis en java esta bastante claro. felicidades

brayan

25/5/2009
bn
parx esta rrr bueno el codigo y muy bien explicado...grasias m sirvio ...bn

Javier Quinones

04/6/2009
Grax
Hombre muchisimas gracias :)

JuanDa

23/4/2010
Gracias!
Exelente aporte, esta ayuda es dificil encontrarla para Java, me ha ayudado mucho, gracias!

Makubex

27/7/2010
Muchas Gracias
Te la comistes!!!! muchas gracias, el codigo esta claro y sencillo, facil de entender, de nuevo gracias :)

ADAN

04/11/2010
Sos un grandeeeee
NO SABES DE LA QUE ME SALVASTE AMIGAZO!!! OJALA HUBIERAN PERSONAS TAN SIMPLES PARA EXPLICAR PROGRAMACION COMO VOS!! DE VERDAD TE FELICITO POR TAN SENCILLA EXPLICACION!

john

20/10/2012
bien
genial graxias

cristina

26/1/2014
Felicidades
muchas gracias muy bien explicado

Compartir