메모리 노드 트리가 매우 커서 트리를 통과해야합니다. 각 자식 노드의 반환 값을 부모 노드로 전달합니다. 모든 노드가 루트 노드까지 데이터 버블을 가질 때까지이 작업을 수행해야합니다.
순회는 이와 같이 작동합니다.
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
있습니까?