ayuda recorrido no recursivo de un árbol

antonio_18
03 de Mayo del 2009
Hola, mi nombre es Antonio, y necesito un procedimiento postorden para recorrer un árbol... por ejemplo un recorrido preorden no recursivo sería el siguiente:

void preordenNR(const ArbolBinario<int>& a)
{
ArbolBinario<int>::Nodo actual;
stack<ArbolBinario<int>::Nodo> p;

actual= ArbolBinario<int>::nodo_nulo;
p.push(actual);

actual= a.raiz();
while (actual!=ArbolBinario<int>::nodo_nulo) {
cout << a.etiqueta(actual) << \\\\' \\\\';
if (a.derecha(actual)!=ArbolBinario<int>::nodo_nulo)
p.push(a.derecha(actual));
if (a.izquierda(actual)!=ArbolBinario<int>::nodo_nulo)
actual= a.izquierda(actual);
else {
actual=p.top();
p.pop();
}
}
}


Y yo lo que necesito es un procedimiento igual que este pero en vez de ser en preorden, que sea en postorden... si me ayudaseis os lo agradecería muchísimo.

Un saludo.