LINGUAGGIO C Alberi e livelli 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 in linguaggio C implementando le seguenti funzionalità: int esiste_nodo_al_livello(albero T, int v, int l); 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 in linguaggio C implementando le seguenti funzionalità: int* costruisci_livello_foglia(albero T, int v); 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 in linguaggio C implementando le seguenti funzionalità: int** livelli_nodo_comune(albero T1, albero T2); dato un albero T1, e un albero T2, costruire (dinamicamente) un array A tale per cui: l’indice di tale array corrisponde agli indici dei livelli di T1 ad ogni indice i di A bisogna associare un array B che sarà NULL se T1 e T2 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 T1.
Testo T1 T2 3 3 14 22 8 10 A 66 11 45 11 45 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 elem2{ int valore; struct elem2* primo_figlio_sx; struct elem2* fratello_dx; } nodo_albero_N; typedef nodo_albero_N* alberoN;.
Testo Si completi la libreria alberi_comune.h in linguaggio C implementando la seguente funzionalità: int livelli_figli_nodo(albero T1, alberoN T2, int x, int h); dato un albero binario T1, un albero di grado arbitrario T2, un intero x e un intero h, ritornare 1 (true) se tutti i figli del nodo in T2 contenente x sono nodi posizionati al livello h di T1. Ritornare 0 (false) altrimenti.
Testo T1 T2 13 3 14 22 10 67 55 18 8 88 66 11 45 x = 8 h = 2 11 45 66 true
Testo Si completi la libreria alberi_comune.h in linguaggio C 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 T1, albero T2); int livelli_figli_nodo(albero T1, alberoN T2, int x, int h);