广搜和深搜

深度优先搜索:

dfs,运用递归函数,通过栈的结构进行搜索。

模板:

·dfs(状态) 
–if 状态 是 目标状态then
·dosomething
–else
·for 每个新状态
–if 新状态合法
»dfs(新状态)
·主程序:
·dfs(初始状态)

广度优先搜索:

bfs,运用递归函数,通过队列的方式搜索。

dfs就是对于某一个搜索树,通过一定的顺序把每一个枝上的子树全都遍历一遍。。也就类似于从起点出发,先把一个方向的点都遍历完才会改变方向......“不撞南墙不回头”

bfs是遍历某一深度,通过队列的方式存起来,边push边pop,知道队列为空才遍历完。bfs相对于dfs来说运用空间更多。DFS是空间效率高,DFS不需要保存搜索过程中的状态,而BFS在搜索过程中需要保存搜索过的状态,而且一般情况需要一个队列来记录。