대기열을 사용하여 나무의 폭 넓은 첫 번째 검색을하고 싶습니다.열거하는 동안 대기열에 삽입
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);
}
효과적인 작업 사례는 무엇입니까? 내가 뭔가를 놓치지 않는 한, 당신은 계속적으로 아이템을 제거하고 궁극적으로 빈 큐로 끝납니다. "Dequeue"명령을 처리 한 후 처리해야합니까? –