Viendo tu metodo:
Código C:
Ver originalvoid inOrder(ARBOLNODOPTR arbolPtr)
{
if (arbolPtr != NULL)
{
inOrder(arbolPtr->izquierdaPtr);
printf("%3d", arbolPtr
->dato
); inOrder(arbolPtr->derechaPtr);
}
}
Cada vez que llegamos a la condicion de que arbolPtr es NULL eso quiere decir que es una hoja. Ahora simplemente deberias returnar un uno idicando que es una hoja. Luego cada llamada recursiva recoje esos valores y simplemente los suma y los devuelve.
Código C:
Ver originalint NumHoja(ARBOLNODOPTR arbolPtr)
{
if (arbolPtr != NULL) return ( NumHoja(arbolPtr->izquierdaPtr) + NumHoja(arbolPtr->derechaPtr) ) ;
else return 1;
}