Non riesco a risolvere questo problema sugli alberi in C. Dato un array a e la sua lunghezza effettiva i devo creare (con un algoritmo ricorsivo Bitnode creatree(int a[], int i)) un albero tale che la radice abbia l'elemento a[0], il figlio sinistro a[2*i+1] e il figlio destro a[2*i+2]. Penso che il passo base l'abbia trovato, ossia :
Sono riuscito a far si che vengano allocati porzioni di memoria per i nuovi nodi, solo il problema nasce dal fatto che popolo i nodi troppo velocemente rispetto a quanto i si decrementa...
Poi non capisco se è un problema risolvibile attraverso la visita in preordine, postordine o simmetrica...
Codice:
Bitnode creatree(int a[], int i) {
Bitnode b = (Bitnode)malloc(sizeof(struct bit_node))
if (i==0)
b->info = a[0];
else
b = creatree(a,i-1);
return b
Poi non capisco se è un problema risolvibile attraverso la visita in preordine, postordine o simmetrica...