Mostrando entradas con la etiqueta recorrido en anchura. Mostrar todas las entradas
Mostrando entradas con la etiqueta recorrido en anchura. Mostrar todas las entradas

miércoles, 25 de septiembre de 2013

Recorrido por Niveles En Arboles

Hola amig@s en esta ocacion les mostrare la funcion de recorrido por niveles (anchura) en arboles.
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í.