BFS:广度优先搜素,也是一种搜索算法,讲究搜索的广度,所以叫广度优先算法。这个算法的核心就是,先把周围的找完,再去找更深的地方。

实现思路:每遇到一个元素,就把这个元素的所有邻接元素放入队列,当队列不为空的时候,不断从队首拿出元素进行操作,直到队列为空。

队列  通常使用stl  queue
常用操作:

  1. 入队(push)
  2. 出队(pop)
  3. 判断队列是否为空(empty)
  4. 统计队列元素个数(size)
  5. 访问队首元素(front)
可能会遇到bfs去重问题  需要用到set(从某一个状态经过几步到达另一个状态通常可以考虑这种)
下面看一下模板
20161116172348041.png


BFS用来搜索最短路径的解法是比较合适的。
DFS用来搜索全部的解。  个人理解一些拆分数字之类的题  用这个更好一些
BFS是浪费空间节省时间,DFS是浪费时间节省空间