Ragazzi ho sviluppato la funzione per la visita preorder di un albero sviluppato tramite array
void preorder (int tree[])
{
int radice=1, i=0, el=0, ver=1, figlio=1;
Coda *head=NULL;
head=calloc(1,sizeof(Coda));
head->elem=radice;
el++;
printf("nodo:%d\n",tree[head->elem]);
while(ver==1)
{
figlio=(head->elem)*2; //vedo se c'è il figlio sinistro
if(figlio<=16 && tree[figlio]!=-1)
{
ins_nodo(figlio,&head); //inserisco il figlio sinistro nella pila
el++;
printf("nodo:%d\n",tree[head->elem]); //stampo l'elemento in cima alla pila
}
else
{
figlio=head->elem; //ritorno all'ultimo nodo visualizzato
elim_testa(&head); //elimino elemento in testa alla pila
el--;
ver=0; //ver è una variabile di verifica
while(ver==0)
{
figlio=(figlio*2)+1; //vedo se c'è il figlio destro
if(figlio<=16 && tree[figlio]!=-1)
{
ins_nodo(figlio,&head); //inserisco il figlio destro nella pila
el++;
printf("nodo:%d\n",tree[head->elem]); //stampo l'elemento in cima alla pila
ver=1; //quando trovo un figlio a destra la incremento ad uno cosi posso verificare se ci sono figli sinistri
}
else
{
if(el>0) //elimino elemento solo se la pila ha almeno un elemento..
{
figlio=head->elem;
elim_testa(&head);
el--;
}
else //altrimenti esco dal programma..
ver=2;
}
}
}
}
}
come la modifico in modo tale da farla diventare le altre modalità di visità? grazie mille per le risposte