SOLUCIÓN AL EJERCICIO Nš 3 DE ÁRBOLES BINARIOS


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);
}