Recorrido por niveles en un arbol binario
Siempre es de agradecer para un estudiante de informatica tener ciertos apuntes o algoritmos ya diseñados para poder hacer el recorrido por niveles en un arbol binario. Por desgracia, la mayoria de recorridos por niveles que uno encuentra por ahi son muy incompletos, por lo que he decidido publicar un algoritmo un tanto mas detallado para el que lo necesite.
Clases:
TABB -> el arbol binario a recorrer
TNodo -> el nodo del que esta compuesto el arbol
TVector -> vector de TNodo´s
TCola -> cola de TNodo´s
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
TVector TABB::Niveles(const TABB& f)
{
int i=0;
TVector retorno;
TCola cola;
TNodo* aux=raiz; //entiendase raiz como la raiz del arbol, vamos, el nodo padre
if(raiz!=NULL) //si el arbol no esta vacio
{
cola.encolar(raiz); //encolamos su raiz
while(!cola.EsVacia())
{
aux=cola.Cabeza(); //aux sera la cabeza de la cola
vector[i++]=aux;
cola.Desnecolar(); //desencolamos la cabeza
if(!aux->hijoIzquierdo.EsVacio()) //si el hijo izquierdo no esta vacio
cola.Encolar(aux->hijoIzquierdo); //lo encolamos
if(!aux->hijoDerecho.EsVacio()) //si el hijo derecho no esta vacio
cola.Encolar(aux->hijoDerecho); //lo encolamos
}
}
return retorno;
}
|
De esta manera recorremos el arbol binario almacenando en orden los hijo en la cola y pudiendolos referenciar gras al puntero de tipo TNodo de una manera sencilla, rapida y limpia… que no explican en muchos ejemplos que hay por la red.
Enero 12, 2009 a 7:58 pm
si lo hacen en wikipedia
Marzo 6, 2009 a 2:57 pm
Excelente. realmente es un algoritmo sencillo, rapido y limpio.
Abril 29, 2009 a 2:33 am
Gracias tenia confusiones pero me sirvió de gran ayuda y guía.
Junio 30, 2009 a 6:56 am
puedes publicarlo en C…por favor por que no entiendo bien a que te refieres con esto
TVector TABB::Niveles(const TABB& f) {
int i=0;
TVector retorno (que es retorno??);
TCola cola;
muchas gracias.
Junio 30, 2009 a 10:48 am
Esta en C -__-U. Si no has visto nada de programacion orientada a objetos te habras quedado un poco a cuadros a lo mejor.
TVector TABB::Niveles(const TABB& f) quiere decir: Metodo “Niveles” de la clase TABB con tipo de retorno TVector.