Somma delle foglie

Rivediamo ora l'esercizio di somma delle foglie di un albero quando questo è rappresentato usando liste per i figli di un nodo.

L'algoritmo è sempre lo stesso: l'albero vuoto ha somma zero, l'albero composto da un solo nodo ha come somma delle foglie il valore del nodo, mentre negli altri casi va fatta la somma su tutti i sottoalberi.

Quando l'insieme dei figli è rappresentato con liste, la somma si trova facendo la chiamata ricorsiva sui figli, che si trovano facendo la scansione della lista a->figli.

int SommaFoglie(TipoAlbero a) {
  TipoLista l;
  int somma;

  if(a==NULL)
    return 0;

  if(a->figli==NULL)
    return a->info;

  somma=0;
  l=a->figli;
  while(l!=NULL) {
    somma+=SommaFoglie(l->figlio);

    l=l->next;
  }

  return somma;
}