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(" ) "); }