作文以记之 ~ 广度优先搜索BFS 和 深度优先搜索DFS 简单总结
0、简单总结
广度优先搜索算法(BFS
),是一种 利用队列 实现的搜索算法。
深度优先搜索算法(DFS
),是一种 利用递归 实现的搜索算法。
BFS
常与DFS
进行比较分析, BFS
的重点在于队列,而 DFS
的重点在于递归。这是它们的本质区别。
有个小点是,能用dfs解决的题,一般就不能用bfs解决;能用bfs解决的题,一般就不能用dfs。(相关内容可点击 dfs bfs算法区别 此博客进行查看!)
两种算法的具体说明可点击 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) 此文章进行查看!
经过几道题的练习,简单来说,BFS
算法的实现,至少需要两个存储数据的容器,比如队列和哈希表,队列保存当前条件下满足要求的数据,在这些数据中再去寻找更合适的数据;哈希表则保存所有已出现过的数据,防止后续操作误判。
DFS
算法的实现,力扣上给了两种模板,第一种就是利用递归,其本质是利用了隐式栈;第二个模板与BFS
有点相近,只不过是将隐式栈转换为了显式栈,或者说就是将递归展开,有点趋近于迭代。
1、BFS题目博客列表
1) 作文以记之 ~ 岛屿数量
2) 作文以记之 ~ 单词接龙
3) 作文以记之 ~ 打开转盘锁
4) 作文以记之 ~ 完全平方数
5) 作文以记之 ~ 二叉树的层序遍历
6) 作文以记之 ~ 二叉树的最大深度
7) 作文以记之 ~ 对称二叉树
8) 作文以记之 ~ 路径总和
9) 作文以记之 ~ 图像渲染
10)作文以记之 ~ 01 矩阵
11)作文以记之 ~ 钥匙和房间
后续继续补充!
2、DFS题目博客列表
1) 作文以记之 ~ 岛屿数量
2) 作文以记之 ~ 克隆图
3) 作文以记之 ~ 目标和
4) 作文以记之 ~ 二叉树的前序遍历
5) 作文以记之 ~ 二叉树的中序遍历
6) 作文以记之 ~ 二叉树的后序遍历
7) 作文以记之 ~ 二叉树的最大深度
8) 作文以记之 ~ 对称二叉树
9) 作文以记之 ~ 路径总和
10) 作文以记之 ~ 图像渲染
11) 作文以记之 ~ 钥匙和房间
12) 作文以记之 ~ 验证二叉搜索树
后续继续补充!