Ciao a tutti!!
Non riesco a capire bene l'algoritmo ricorsivo che realizza la visita per livelli su un albero generale. So che si realizza tramite una coda. Assumendo che l'albero sia dichiarato in questo modo:
L'algoritmo di visita è il seguente (tratto dal sito del mio prof):codice:/* Albero n-ario */ struct gtree{ int dato; struct node *primofiglio; struct node *listafratelli; }; typedef struct gtree *gtree;
Il problema è che non riesco a capire:codice:/*Si trattava di usare una coda per mantenere traccia del livello dei nodi. La coda poteva essere definita con un dato di tipo gtree. Assumiamo quindi un tipo coda e assumiamo date tutte le routine standard su coda.*/ void visita (gtree t){ coda q; gtree aux,tmp; init(q); if (t!=NULL) enqueue(q,t); while(!empty(q)){ aux = dequeue(q); printf("%d",aux->dato); tmp = aux->lista_fratelli; while(aux!=NULL){ enqueue(q,aux); aux = aux->lista_fratelli; } if (aux->primo_figlio!=NULL) enqueue(q,aux->primo_figlio); } }
1 - Che ci faccio con tmp
2 - Come avviene passo passo la memorizzazione dei vari sottoalberi nella coda
Spero di essere stato chiaro. Grazie![]()

Rispondi quotando