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