SOLUCIÓN AL EJERCICIO Nš 2 DE ÁRBOLES GENERALES


Haremos un recorrido en preorden por el árbol y cada nodo visitado implicará un incremento de uno en la variable que al final contendrá el número total de nodos del árbol.De esta manera,podemos usar el mismo algoritmo no recursivo que para listar un árbol ,pero sustituyendo la escritura por el incremento de la variable.La función es la siguiente:

int NumeroNodosArbol(tArbol T)
{
  int res;
  Pila P;
  Nodo m;

  res=0;
  P=CrearPila(sizeof(nodo));

  m=Raiz(T);
  do{
    if(m!=NODO_NULO){
      res++;
      Push(&m,P);
      m=HijoIzqda(m,T);
    }
    else if(!VaciaPila(P)){
            Tope(&m,P);
            Pop(P);
            m=HermanoDrcha(m,T);
         }
  }while (!VaciaPila(P));
  
  DestruirPila(P);

  return res;

}