Vamos a ver:
-RECURSIVAMENTE:
Hay tres métodos Inorden, Preorden y Postorden, según el orden de recorrido de los nodos.
Inorden:
Primero procesamos el Hijo Izquierdo luego la raiz y finalmente el Hijo Derecho.
void inorden(arbol a)
{
arbol de,iz;
datosarbol x;
if (!a.vacio())
{
iz=a.hijoizq();
de=a.hijoder();
x=a.raiz();
inorden(iz);
write(x)//proceso la raiz según el caso
inorden(de);
}
}
Preorden:
Primero procesamos la raiz, luego el Hijo Izquierdo y finalmente el Hijo Derecho.
void preorden(arbol a)
{
arbol de,iz;
datosarbol x;
if (!a.vacio())
{
iz=a.hijoizq();
de=a.hijoder();
x=a.raiz();
write(x)//proceso la raiz según el caso
inorden(iz);
inorden(de);
}
}
Postorden:
Primero procesamos el Hijo Izquierdo luego el Hijo Derecho y finalmente la raiz.
void postorden(arbol a)
{
arbol de,iz;
datosarbol x;
if (!a.vacio())
{
iz=a.hijoizq();
de=a.hijoder();
x=a.raiz();
inorden(iz);
inorden(de);
write(x)//proceso la raiz según el caso
}
}
NO RECURSIVO.
En cuanto al recorrido no recursivo se hace con la ayuda de una cola, se trata de un recorrido por niveles.
void recorrido(arbol a)
{
cola c;
arbol b;
c.crearcola();
c.inscola(a);//inserto el arbol en la cola
while (!c.colavacia())
{
c.frentecola(b);
iz=b.hijoizq();
de=b.hijoder();
x=b.raiz();
write(x);//proceso raiz según caso
c.inscola(iz);
c.inscola(de);
}
}
Espero que te haya servido de ayuda...