Aquí hay un pseudocódigo:
El algoritmo recursivo para cualquier orden (en, pre, post) usa la pila de llamadas de función para empujar / pop de nodos / datos del árbol en la pila de la forma en que desea que ocurra el recorrido:
Entonces, al escribir un recorrido iterativo en orden de un árbol binario, un enfoque inmediato es usar una estructura de datos de pila para simular y lograr la función de comportamiento que la pila de llamadas le dio:
- ¿Cuáles son las diferencias entre Algorithmia y Amazon Lambda?
- ¿La programación competitiva se trata más de pensar o de implementar (modificar) algoritmos conocidos?
- ¿Cómo obtuvieron sus nombres los recorridos de árbol binario preorden, inorder y postorder?
- Cómo resolver la Tierra y los meteoritos en el Algoritmo Calificador 2 de Hackerearth
- Cómo calcular coeficientes binomiales para números muy grandes
Suponiendo que TreeNode es una estructura de estructura / clase / datos o lo que sea en cualquier idioma. Encapsula los datos para representar un nodo de un árbol binario:
void inOrder (raíz de TreeNode)
{
if (raíz == nulo)
regreso;
TreeNode iter = root;
Pila s;
while (! s.isEmpty ())
{
while (iter! = nulo)
{
s.push (iter);
iter = iter.left;
}
iter = s.pop ();
System.out.println (iter.data);
iter = iter.right;
}
}