Cavolo ragazzi....programmare sembrava una cosa carina per questo avevo deciso di impegnare l'estate provando a studiare il C da autodidatta grazie al web...Ma sta diventando assurdo..

Ho letto degli appunti sugli alberi, ed ho provato a fare un algoritmo che legge un array secondo i tre ordini di visita di un albero...

Ora però, o mi trovo le idee confuse, o qualcosa non va..

vi faccio vedere l'algoritmo

codice:
#include<stdio.h>

typedef struct {
	int dato; 
	int esiste;
	} nodo;


void inorder(nodo *albero,int i);
void preorder(nodo *albero,int i);
void postorder(nodo *albero,int i);

void main()
{

nodo albero[15]={{0,0},{1,1},{2,1},{3,1},{4,1},{5,1},{6,1},{0,0},{0,0},{7,1},{8,1},{0,0},{0,0},{9,1},{0,0}};
int pila[15],i=1;



printf("Inorder:\n");
inorder(albero,i);
printf("\n\n");
printf("Preorder:\n");
preorder(albero,i);
printf("\n\n");
printf("Postorder:\n");
postorder(albero,i);

system("PAUSE");
}



void inorder(nodo *albero,int i)
{
	if (albero[i].esiste==1) 
    {
		if  (albero[2*i].esiste==1)     
        inorder(albero,2*i);
		printf("%d \n",albero[i].dato);
		if  (albero[(2*i)+1].esiste==1) 
        inorder(albero,(2*i)+1);
		}
}

void preorder(nodo *albero,int i)
    {

     
if(albero[i].esiste==1)
     {
printf("%d\n",albero[i].dato);
       if (albero[(2*i)].esiste==1)
       preorder(albero,2*i);
                      
       if (albero[(2*i)+1].esiste==1)
       preorder(albero,(2*i)+1);
      }

} 



void postorder(nodo *albero,int i)
{    
	if (albero[i].esiste==1) 
    {
		if  (albero[2*i].esiste==1)
        postorder(albero,2*i);
		if  (albero[(2*i)+1].esiste==1)
        postorder(albero,(2*i)+1);
		printf("%d\n",albero[i].dato);
	}
}
i risultati sono

Inorder: 4-7-2-8-5-1-6-9-3
Preorder: 1-2-4-7-5-8-3-6-9
Postorder: 7-4-8-5-2-9-6-3-1


Avrò fatto un pò troppa confusione leggendo gli alberi...ma secondo me i risultati che stampa sono totalmente sbagliati...voi esperti che dite?



P.S. Lo so lo so il system("pause") non ci vuole..ma siccome non ci devo lavorare con il C, per ora mi esercito con questo visto che sempre sotto windows li devo provare i programmi