Tengo un árbol de nodos de memoria muy grande y necesito atravesar el árbol. Pasando los valores devueltos de cada nodo hijo a su nodo padre. Esto debe hacerse hasta que todos los nodos tengan su burbuja de datos hasta el nodo raíz.
Traversal funciona así.
private Data Execute(Node pNode)
{
Data[] values = new Data[pNode.Children.Count];
for(int i=0; i < pNode.Children.Count; i++)
{
values[i] = Execute(pNode.Children[i]); // recursive
}
return pNode.Process(values);
}
public void Start(Node pRoot)
{
Data result = Execute(pRoot);
}
Esto funciona bien, pero me preocupa que la pila de llamadas limite el tamaño del árbol de nodos.
¿Cómo se puede reescribir el código para que no se realicen llamadas recursivas a Execute
?