深度优先搜索(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
未完待续。

浙公网安备 33010602011771号