我想用一個隊列插入到隊列中,同時枚舉它
var q = new Queue<T>();
q.Enqueue(Root);
foreach(T root in q)
{
foreach(T t in root.Children)
q.Enqueue(t);
}
不過,我得到一個做廣度優先搜索一棵樹的「枚舉被實例化後集合被修改。」例外。
有沒有C#類型,我可以做到這一點?
編輯:一點點閱讀讓我的事情我可能會做這個完全錯誤的。
有沒有辦法使用foreach從隊列中出列?
這個工作,但醜(OMHO)
var q = new Queue<T>();
q.Enqueue(Root);
while(q.Count > 0)
{
T root = q.Dequeue();
foreach(T t in root.Children)
q.Enqueue(t);
}
你的工作示例有效地做了什麼?除非我錯過了某些東西,否則你會不斷添加然後移除項目,最終會以空隊列結束。是否應該在「出列」命令之後進行處理? – 2009-03-02 23:39:42