Mi è chiesto di scrive un algoritmo iterativo di visita simmetrica per un albero binario utilizzando come struttura dati ausiliaria una pila, ho scritto questo (pseudo codice)
visitaSimmetrica(Node root){
Stack s;
push(s,u);
while(s!=vuoto){
u=pop(s);
if(u.left!=null AND u.right!=null)vistita u
else{
if(u.right!=null)push(s,u.right)
push(s,u)
if(u.left!=null)push(s,u.left)
}
}
}
In questo modo se ho un solo nodo nell' albero lo visito e concludo altrimenti metto nella pila prima il figlio dx, poi la radice e poi il sx, successivamente varranno estratti in ordine inverso ossia in visita simmetrica , il problema sta nel fatto ca se prendiamo l'albero radice 6, figlio sx 5, figlio dx 7 dopo aver inserito i nodi ed estratto e visitato il 5 , una volta che estraggo l 1 reinserisco nuovamente i nodi.
Qualcuno è in grado di aiutarmi ? Grazie