我无法清楚地了解如何使用队列实现广度优先搜索。
这就是我所理解的:
create queue Q
enqueue root onto Q
while( !Q.empty() )
{
node t = Q.deque();
if(t is the goal we're seeking)
return t;
enqueue t->leftchild
enqueue t->rightchild
}
所以我错过了什么?
答案 0 :(得分:0)
正如评论中所述,你错误地认为每个州都有两个可以从中生成的状态。
正确的算法是:
BFS(G,v):
create a queue Q
enqueue v onto Q
mark v
while Q is not empty:
t ← Q.dequeue()
if t is what we are looking for:
return t
for all edges (t,u) in G do
if u is not marked:
mark u
enqueue u onto Q
Wikipedia的信用