2013-08-03 46 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; 
     }