深度优先搜索(DFS)和宽度优先搜索(BFS)

1.使用到的方法或数据结构:
DFS:栈(或递归)

BFS:队列(一开始先把第一个节点放进队列中)

 

2.用法:

DFS:内存消耗小,仅仅能找到解。

BFS:能找到最短路径

 

3.应用:

刚接触这两个算法的时候,不知道怎么将它们运用到一般的题目中。(以为只能用在解决“图”的题目中)但其实,我们利用的是它们的思想,找到每一步的“状态”(相当于图中的节点),就可以用来解题了。

 

4.特殊技巧:

BFS:统计层数(最短路径长度)

用一个count变量,一开始初始化为1(队列中一开始有一个父节点),然后就是一般BFS的过程了,进队列,出队列,每出一次队列count-1,每次count=0代表当前一层已经搞定,再将当前队列长度赋值给count。队列为空时,BFS结束,此时的count的值就为最短路径长度了。  

LeetCode 127 Word Ladder

 

未完待续。

posted @ 2017-11-16 01:01  fengzw  阅读(807)  评论(0)    收藏  举报