Puedes marcar la raiz en el cálculo pasándola por parámetro.
Código (cpp) [Seleccionar]
int sumar(const pnodo a, const pnodo root)
{
int suma=0;
if(a!=NULL){
suma=sumar(a->izq,root)+sumar(a->der,root);
if ((a->izq!=NULL || a->der!=NULL) && a!=root) // neither leaf nor root
suma+=a->dato;
}
return suma;
}
// Initial call
pnode a ;
// populate tree a with subtrees
sumar(a,a);