Ho un albero dei nodi di memoria molto grande e ho bisogno di attraversare l'albero. Passando i valori restituiti di ciascun nodo figlio al nodo genitore. Questo deve essere fatto fino a quando tutti i nodi hanno i loro dati fino al nodo radice.
L'attraversamento 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 temo che lo stack delle chiamate limiti la dimensione dell'albero dei nodi.
Come può essere riscritto il codice in modo che non vengano effettuate chiamate ricorsive a Execute
?