Como funciona este recorrido pues como su nombre lo dice va por niveles comenzando por la raiz hasta llegar al ultimo nodo del arbol; primeramente ingresamos el nodo raiz en una cola, luego sacamos este valor de la cola y mostramos su contenido y ahora vemos si hay valores en los nodos izquerdo y derecho respectivamente si no son nulos insertamos sus valores en la cola repetimos esto hasta que la cola quede vacia.
Seudocodigo:
recorrido_nivel(Tarbol a)
nodo aux;
si (a != NULL)
encolar(a);
mientras (!colavacia()) hacer
aux=desencolar();
mostrar aux
si (aux->izq != NULL) encolar(aux->izq);
si (aux->der != NULL) encolar(aux->der);
fin mientras
fin si
Capturas:
Codigo:
Recorrido por nivel:
void arbol::Recorrido_Nivel(TREE aux){ if(aux){ Cola cola; TREE a; cola.insertar(aux); while(!cola.colavacia()){ a=cola.quitar(); cout<valor< Izdo!=NULL){ cola.insertar(a->Izdo); } if(a->Dcho!=NULL){ cola.insertar(a->Dcho); } } } }
Cola.h
#include#include using namespace std; ////////////////////////cola class nodoc{ public: Tarbol dato; nodoc *siguiente; nodoc(Tarbol n, nodoc *sig=NULL){ dato=n; siguiente=sig; } }; typedef nodoc *pnodo; class Cola{ //private: public: pnodo frente; pnodo final; Cola(){ frente=NULL; final=NULL; } bool colavacia(); void insertar(int v); int quitar(); }; bool Cola::colavacia(){return frente==NULL;} void Cola::insertar(int v){ if(colavacia()){ frente=new nodoc(v); final=frente; }else{ final->siguiente=new nodoc(v); final=final->siguiente; } } Tarbol Cola::quitar(){ pnodo aux; Tarbol x; if(colavacia()) return 0; aux=frente; x=aux->dato; frente=frente->siguiente; delete(aux); return x; }
descarga el código aquí.