Salve ragazzi, sono alle prese col C, precisamente l'argomento è quello degli alberi mediante array. Non sono sicuro di aver compreso bene l'argomento ma impegnandomi son riuscito a completare un esercizio e vorrei sapere se potrebbe andare. La traccia è presente nel codice...
Naturalmente so che molte parti potrebbero essere migliorate, il mio dubbio sta solo nel fatto di vedere se ho capito in un certo modo l'argomento...
Spero possiate aiutarmi, ecco il codice!

codice:
/*
                            TRACCIA
Scrivere function C per la costruzione e visita per livelli di un albero qualsiasi rappresentato mediante array.
[Suggerimento: la struct che definisce il generico nodo dell'albero, come nella figura sotto deve contenere i seguenti campi:
l'informazione, il suo grado ed un array di puntatori (ai nodi figli) di dimentisione pari al massimo grado dei nodi che si suppone noto]
*/

#include <stdio.h>

#define MAXGRADO 4
#define MAXNODI 11

struct NODO
{
    char c;
    int grado;
    int g[MAXGRADO];
} nodi[MAXNODI];

void enqueue ();

int main()
{
    int i, j, conta=1, next_level=0;
    printf("Costruzione di un albero\nOgni nodo puo' avere come informazioni un carattere\nMassimo %d nodi e ogni nodo massimo %d figli\n", MAXNODI, MAXGRADO);
    printf("\nInserisci il nodo radice -> ");
    nodi[0].c = getchar();
    printf("Inserisci il grado della radice -> ");
    scanf("%d", &nodi[0].grado);

    enqueue();

    for(i=0;i<MAXNODI;i++)
    {
        conta += nodi[i].grado;
    }
    printf("\n\nVisita albero per livelli\n");
    j = 0;
    for(i=0;i<conta;i++)
    {
        printf("\t%c ", nodi[i].c);
        next_level += nodi[i].grado;
        if(i == j)
        {
            printf("\n");
            j += next_level;
            next_level = 0;
        }
    }

    return 0;
}
void enqueue ()
{
    int k, i=0, j=1;
    while (i != MAXNODI)
    {
        for(k=0;k<nodi[i].grado;k++)
        {
            fflush(stdin);
            printf("\nInserisci il %d figlio del nodo %c -> ", k+1, nodi[i].c);
            nodi[i+j+k].c = getchar();
            printf("Inserisci grado del %d figlio -> ", k+1);
            scanf("%d", &nodi[i+j+k].grado);
            nodi[i].g[k] = i+j+k;
        }
        j += k-1;
        i++;
    }
}