ayuda recorrido no recursivo de un árbol
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.
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.
