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.
