El código es el siguiente:
/*Fichero: comprobar.c */
#include < pilas.h>
#include < arbolesB.h>
/*---------------------------------------*/
void inordenNR(ArbolB T,void (* EscribirElemento)(void *),int tamano)
{
NodoB nodoActual,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);
nodoActual=RaizB(T);
fin=0;
while(!fin){
while(nodoActual!=NODOB_NULO){
Push(&nodoActual,p);
nodoActual=HijoIzqdaB(nodoActual,T);
}
Tope(&nodoActual,p);
Pop(p);
if (nodoActual!=NODOB_NULO){
EtiquetaArbolB(et,nodoActual,T);
(*EscribirElemento)(et);
nodoActual=HijoDrchaB(nodoActual,T);
}
else fin=1;
}
free(et);
DestruirPila(p);
}