Dubbio su Alberi e Ricorsione

di il
2 risposte

Dubbio su Alberi e Ricorsione

Salve ragazzi ho alcune funzioni che hanno codice corretto però non riesco io a capire come vengono eseguite. Mi spiego meglio: ad esempio nella funzione SOMMA quando cerco di fare con carta e penna le istruzioni passo-passo non mi trovo con il TOT. Credo sia dovuto al fatto che non mi è tanto chiara la ricorsione oppure i record di attivazione. Mi potete spiegare come funziona il codice di queste procedure che vi elenco? Grazie a tutti!
int somma(tipoalbero alb) {
    int s=0;
    int d=0;
    int tot=0;
    if (alb==NULL){
    printf ("");
    return tot;
    }
      else {
      s=s+somma(alb->sin);
      d=d+somma(alb->des);
      }
      tot=s+d+alb->info;
return tot;
}

int max(tipoalbero albero) {
int massimo = albero->info;
int m=0;

  if (albero->sin) {  
  m = max(albero->sin);
    if (m>massimo)
    massimo=m;
    }
               
  if (albero->des) {
  m = max(albero->des);
    if (m>massimo)
    massimo=m;
    }                        
return massimo;
}

int min (tipoalbero albero) {
int minimo=albero->info;
int m=0;
  if (albero->sin) {
  m = min(albero->sin);
    if (m<minimo)
    minimo=m;
  }
return minimo;
}

void dealloca_albero(tipoalbero *palb) {
  if( (*palb)!=NULL ) {
    dealloca_albero(&(*palb)->sin);
    dealloca_albero(&(*palb)->des);
  }

free(*palb);
*palb=NULL;
return;
}

2 Risposte

  • Re: Dubbio su Alberi e Ricorsione

    Per capire come funziona e' facile: devi usare dei casi di test.

    1) albero vuoto (puntatore NULL)
    2) albero con un solo nodo
    3) albero con la radice e un solo nodo sul ramo sinistro
    4) come 3) ma sul ramo destro
    5) albero con radice, un nodo a sinistra ed uno a destra

    Ti servono meno di 30 secondi
  • Re: Dubbio su Alberi e Ricorsione

    Bhe ci ho capito poco
Devi accedere o registrarti per scrivere nel forum
2 risposte