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.

5 comentarios para “Recorrido por niveles en un arbol binario”

  1. Anónimo Dijo:

    si lo hacen en wikipedia

  2. John Jairo Carmona Dijo:

    Excelente. realmente es un algoritmo sencillo, rapido y limpio.

  3. Gracias tenia confusiones pero me sirvió de gran ayuda y guía.

  4. 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.

    • 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.

Leave a Reply