Tengo un árbol de nodos de memoria muy grande y necesito atravesar el árbol. Pasar los valores devueltos de cada nodo secundario a su nodo primario. Esto debe hacerse hasta que todos los nodos tengan su burbuja de datos hasta el nodo raíz.
El recorrido 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 Execute
se realicen llamadas recursivas ?