Esercitazione ASD LINGUAGGIO C Alberi e livelli Testo
Esercitazione ASD LINGUAGGIO C Alberi e livelli
Testo Si consideri una libreria, denominata alberi_comune. h che implementa in linguaggio C i seguenti tipi typedef struct elem{ int info; struct elem* sx; struct elem* dx; } nodo_albero; typedef nodo_albero* albero;
Testo Tale libreria, implementa anche i seguenti metodi int esiste_foglia(albero T, int v); int altezza(albero T); int num_nodi_livello(albero T, int l);
Testo Si completi la libreria alberi_comune. h implementando le seguenti funzionalità: in linguaggio C int esiste_nodo_al_livello(albero T, int v, int l); O dato un albero T, un valore v, e un valore l, verifichi se esiste un nodo in T che contiene il valore v e che tale nodo si trovi al livello l di T.
Testo Si completi la libreria alberi_comune. h implementando le seguenti funzionalità: in linguaggio C int* costruisci_livello_foglia(albero T, int v); O dato un albero T, e un valore v, costruire (dinamicamente) e restituire un array contenente i valori dei nodi in T che sono allo stesso livello della foglia di T contenente il valore v.
Testo Si completi la libreria alberi_comune. h implementando le seguenti funzionalità: in linguaggio C int** livelli_nodo_comune(albero T 1, albero T 2); dato un albero T 1, e un albero T 2, costruire (dinamicamente) un array A tale per cui: O l’indice di tale array corrisponde agli indici dei livelli di T 1 O ad ogni indice i di A bisogna associare un array B che sarà NULL se T 1 e T 2 non hanno alcun nodo con lo stesso valore contenuto al livello i (di entrambi) altrimenti B conterrà i valori dei nodi al livello i di T 1. O
Testo T 1 T 2 3 14 66 3 22 11 8 45 11 10 45 A 3 NULL 66 11 45
Testo Si completi la libreria alberi_comune. h in linguaggio C introducendo il seguente nuovo tipo (un albero di grado arbitrario): typedef struct elem 2{ int valore; struct elem 2* primo_figlio_sx; struct elem 2* fratello_dx; } nodo_albero_N; typedef nodo_albero_N* albero. N; .
Testo Si completi la libreria alberi_comune. h implementando la seguente funzionalità: in linguaggio C int livelli_figli_nodo(albero T 1, albero. N T 2, int x, int h); O dato un albero binario T 1, un albero di grado arbitrario T 2, un intero x e un intero h, ritornare 1 (true) se tutti i figli del nodo in T 2 contenente x sono nodi posizionati al livello h di T 1. Ritornare 0 (false) altrimenti.
Testo T 2 T 1 13 3 14 66 22 11 true 10 67 55 88 8 45 11 18 45 66 x=8 h=2
Testo Si completi la libreria alberi_comune. h implementando le seguenti funzionalità: int esiste_nodo_al_livello(albero T, int v, int l); int* costruisci_livello_foglia(albero T, int v); int** livelli_nodo_comune(albero T 1, albero T 2); int livelli_figli_nodo(albero T 1, albero. N T 2, int x, int h); in linguaggio C
- Slides: 11