আমার মেমরি নোড ট্রি খুব বড় এবং গাছটি পেরোতে হবে। প্রতিটি সন্তানের নোডের ফিরে আসা মানগুলি তাদের প্যারেন্ট নোডে পাস করা। সমস্ত নোডের রুট নোড পর্যন্ত তাদের ডেটা বুদবুদ না হওয়া পর্যন্ত এটি করতে হবে।
ট্র্যাভারসাল এটির মতো কাজ করে।
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
যায়?