Ho un albero dei nodi di memoria molto grande e devo attraversare l'albero. Passando i valori restituiti di ciascun nodo figlio al nodo principale. Questo deve essere fatto fino a quando tutti i nodi hanno i loro dati in bolla sul nodo principale.
Traversal funziona così.
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);
}
Funziona bene, ma sono preoccupato che lo stack di chiamate limiti le dimensioni dell'albero dei nodi.
Come si può riscrivere il codice in modo da non effettuare chiamate ricorsive Execute
?