Bellek düğüm ağacında çok büyük var ve ağacı geçmem gerekiyor. Her alt düğümün döndürülen değerlerini üst düğümüne geçirme. Bu, tüm düğümlerin verileri kök düğüme kadar kabarcıklı hale gelene kadar yapılmalıdır.
Geçiş böyle çalışır.
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);
}
Bu iyi çalışıyor, ancak çağrı yığınının düğüm ağacının boyutunu sınırlandırmasından endişe ediyorum.
Yinelemeli çağrı yapılmaması için kod nasıl yeniden yazılabilir Execute
?