codice:
double sum(NODO *a) {
if(a == NULL)
return 0.;
return a->value + sum(a->left) + sum(a->right);
}
int count(NODO *a) {
if(a == NULL)
return 0;
return 1 + count(a->left) + count(a->right);
}
double avg(NODO *a) {
if(a == NULL)
return 0;
return sum(a)/(double)count(a);
}
o
codice:
double avg(NODO *a) {
if(a == NULL)
return 0;
double sum = 0.;
int count = 0;
_avg_support_f(a, &sum, &count);
return sum/count;
}
void _avg_support_f(NODO *a, double *sum, int *count) {
if(a == NULL)
return;
(*sum)+=a->value;
(*count)+=1;
_avg_support_f(a->left);
_avg_support_f(a->right);
}
Può essere che ci sia qualche errore, non le ho provate...
Inoltre la prossima volta posta anche le strutture definite da te (NODO ad esempio).