Eu tenho uma árvore de nós de memória muito grande e preciso atravessá-la. Passando os valores retornados de cada nó filho para o nó pai. Isso deve ser feito até que todos os nós tenham seus dados em bolha até o nó raiz.
O Traversal funciona assim.
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);
}
Isso funciona bem, mas estou preocupado que a pilha de chamadas limite o tamanho da árvore de nós.
Como o código pode ser reescrito para que não Execute
sejam feitas chamadas recursivas ?