如何实现广度优先搜索遍历?

时间:2012-08-20 14:49:33

标签: algorithm breadth-first-search

我无法清楚地了解如何使用队列实现广度优先搜索。

这就是我所理解的:

 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
}

所以我错过了什么?

1 个答案:

答案 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的信用