Saya memiliki pohon simpul memori yang sangat besar dan perlu melintasi pohon. Melewati nilai yang dikembalikan dari setiap simpul anak ke simpul induknya. Ini harus dilakukan sampai semua node memiliki data bubble hingga ke root node.
Traversal bekerja seperti ini.
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);
}
Ini berfungsi dengan baik, tapi saya khawatir bahwa tumpukan panggilan membatasi ukuran pohon simpul.
Bagaimana kode dapat ditulis ulang sehingga tidak ada panggilan rekursif untuk Execute
dilakukan?