Revista Ejercicios de Grafos Revista | Page 10
EJERCICIO 8
Implementar una función no recursiva para recorrer un árbol binario en orden.
#include < pilas.h>
#include < arbolesB.h>
void inordenNR(ArbolB T,void (* EscribirElemento)(void *),int tamano)
{
NodoB nodoAct,aux;
void *et;
Pila p;
int fin;
int faltaHD;
//*Indica si falta el hijo derecho*//
p=CrearPila(sizeof(NodoB));
et=malloc(tamano);
if(!et){
//*Error: Sin memoria*//
}
aux=NODOB_NULO;
Push(&aux,p);
nodoAct=RaizB(T);
fin=0;
while(!fin){
while(nodoAct!=NODOB_NULO){
Push(&nodoAct,p);
nodoAct=HijoIzqdaB(nodoAct,T);
}
Tope(&nodoAct,p);
Pop(p);
if (nodoAct!=NODOB_NULO){
EtiquetaArbolB(et,nodoAct,T);
(*EscribirElemento)(et);
nodoAct=HijoDrchaB(nodoAct,T);
}
else fin=1;
}
}
free(et);
DestruirPila(p);
PAGINA 8