Mam bardzo duże drzewo węzłów pamięci i muszę je przechodzić. Przekazywanie zwróconych wartości każdego węzła podrzędnego do ich węzła nadrzędnego. Należy to zrobić, dopóki wszystkie węzły nie będą miały bąbelków danych aż do węzła głównego.
Traversal działa w ten sposób.
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);
}
Działa to dobrze, ale martwię się, że stos wywołań ogranicza rozmiar drzewa węzłów.
Jak można przepisać kod, aby nie było wywołań rekurencyjnych Execute
?