----- 7/3/05 ----- > A lezione avevo capito che un albero era rappresentato da una lista > contenente la radice, il sotto albero sinistro (lista) e il sotto > albero destro (lista); una cosa del genere: (2 (1 () ()) (3 () ()). Come per tutte le strutture astratte, esiste sempre piu' di un modo per rappresentarle. Quello mostrato sopra va benissimo, ma non e' l'unica possibilita': l'importante, poi, e' definire le procedure di accesso in modo coerente con le scelte fatte. > [... ma] > ho notato che la funzione grow-tree genera un albero con un altra > rappresentazione [...] L'esempio disponibile in rete utilizza il concetto di "coppia" al posto di quello di lista, e va bene solo per alberi binari con la proprieta' che ogni nodo o ha due figli o non ne ha alcuno. L'albero dell'esempio menzionato sopra si rappresenterebbe cosi': ( 2 . ((1.()) . (3.())) ) La struttura generale e' ( . ( . ) ) cioe' (cons (cons )) dove i sottoalberi hanno, ricorsivamente, la stessa struttura. Inoltre, i sottoalberi di un solo nodo si rappresentano cosi: ( . () ) > Ho anche visto che per ricavare il sottoalbero destro [si] usa cddr > (e non caddr [...]). Infatti: si deve recuperare l'elemento destro dell'elemento destro ("smontando" due coppie). ----- * -----