मेरे पास मेमोरी नोड ट्री में बहुत बड़ा है और पेड़ को पीछे करने की आवश्यकता है। प्रत्येक बच्चे के लौटे हुए मानों को उनके मूल नोड में पास करना। यह तब तक किया जाना चाहिए जब तक कि सभी नोड्स के पास नोड नोड तक उनका डेटा बबल न हो।
ट्रैवर्सल इस तरह काम करता है।
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);
}
यह ठीक काम करता है, लेकिन मुझे चिंता है कि कॉल स्टैक नोड पेड़ के आकार को सीमित करता है।
कोड को फिर से कैसे लिखा जा सकता है ताकि कोई पुनरावर्ती कॉल न Execute
हो?