L'esercizio consiste nella stampa di tutti i nodi di un albero generale, rappresentato usando vettori dinamici, in rappresentazione parentetica. La rappresentazione parentetica è simile a quella degli alberi binari: l'albero vuoto si stampa come (). Per ogni altro albero, si stampa (, poi la radice, poi i sottoalberi, e infine ).
Si tratta in sostanza di fare la stampa ricorsivamente:
Come si vede chiaramente, si tratta della stampa dei nodi dell'albero, in cui però a ogni passo stampo prima ( e poi ).
Nel caso di alberi generali, per stampare i sottoalberi si usa un ciclo: il numero di figli (e quindi di sottoalberi) si trova in a->numfigli, mentre i puntatori ai nodi figli (ossia i sottoalberi) si trovano nel vettore a->figli.
void StampaAlbero(TipoAlbero a) {
int i;
if(a==NULL) {
printf("()");
return;
}
printf("( %d ",a->info);
for(i=0; i<a->numfigli; i++)
StampaAlbero(a->figli[i]);
printf(" ) ");
}