Ciao , ho il seguente problema in C: dato un albero definito in questo modo:
codice:
typedef struct nodo
   {
     int info;
     struct nodo  *left1;
     struct nodo  *left2;
     struct nodo  *right1;
     struct nodo  *right2;
   } nod;
devo verificare se l abero è un ABR rispetto alla somma dei nodi left1 e left2 e alla somma dei nodi right1 e right2.

codice:
void visita(nod *radice, int *min, int *risp , int *somma)
{
  if (radice != NULL)
    {
      visita(radice->left1,min,risp,somma);
      *somma= *somma+radice->info;
      visita(radice->left2,min,risp,somma);  
      if (radice->info != *somma)
        *somma=radice->info+ *somma;
      if (*min < *somma)
        {
         *min = *somma;
         printf("\n aggiorniamo min %d \n",*min);
           
        }
      else
        {
          *risp = 1;
          printf("aggiorniamo risp %d \n",*risp); 
        }
      somma=0;    
      visita(radice->right1,min,risp,somma);
      visita(radice->right2,min,risp,somma);
    }            
}  

int isBst(nod *root)/*0 se abr 1 NO - FUNZIONE PRINCIPALE- */
{
  int min = INT_MIN;
  int ok = 0;
  int somma = 0;
  visita(root,&min,&ok,&somma);
  printf("valore di ok e' %d \n",ok);
  if (ok == 0)
    return 0;
  else
    return 1;
}
La funzione prinicipale è isBst, all interno richiamo visita inizializzando min al minimo intero, somma e ok a 0.
In output mi restituisce sempre 1 cioe che non è un abr. Ragazzi non so piu come fare
Spero che qualcuno mi aiuti, grazie in anticipo