¿Le da un algoritmo no recursivo que realiza un trabajo de árbol de orden?

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:

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;
}
}

Básicamente, tendría que volver a implementar lo que la recursividad le ofrece “gratis” … es decir, una pila. Y esa es la pista que debes seguir. Por ejemplo, atravesar un árbol sin recursión – GeeksforGeeks