2013-08-03 47 views
0

我想递归地检查四叉树中所有根节点的孩子。虽然四叉树儿童迭代

下面的代码将导致所有的子节点但是返回它是不可能的元素添加到一个集合,同时通过它(可惜)

foreach (QuadTree tree in trees) 
     { 
      if (tree.Children.Count != 0) 
      { 
       foreach(QuadTree child in tree.Children) 
       { 
        trees.Add(child); 
       } 
      } 
     } 

我怎么会去这样做iterrating?

+0

做一个传球第一的收集所有你想添加的'child'对象并将其存储在本地'名单',那么你的'foreach'循环之后添加的项目。编辑:但是,这_seems_有点怪我;你正在迭代你的'树'中的孩子的孩子,然后将它们添加到根'树'集合? –

+0

注意:由于'QuadTree'是您的课程,您可以在'foreach'中启用修改。这是由你来弄清楚这样的操作应该如何表现(以及如何解释/记住这种类的非标准行为) –

+0

@alexei我该如何做到这一点? –

回答

0

感谢球员们,使用索引,只是添加到列表的末尾,我想出了这个。

 int max = trees.Count; 
     for (int i = 0; i < max; i++) 
     { 
      QuadTree tree = trees[i]; 
      if (tree.Children.Count != 0) 
      { 
       foreach(QuadTree child in tree.Children) 
       { 
        trees.Add(child); 
       } 
      } 
      max = trees.Count; 
     }