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;
}