深度优先搜索DFS和广度优先搜索BFS

本文整理于【拉勾*力扣】课程笔记,侵删~

 

1、深度优先搜索

 

2、深度优先搜索算法思想(栈)

先选择一个节点A放入栈中,并标记访问过,输出结果;

将与A相连的、没有被访问过的节点,选择一个节点B放入栈中,并标记访问过,输出结果;

重复以上操作...,结果为A B E G,此时,与当前节点G相连的节点都被访问过,于是将其从栈中弹出;同理弹出E;

 

重复以上操作,直到栈中没有需要处理的元素,最终结果如下:

 

 

3、例题:走迷宫(DFS)

非递归实现

用栈实现DFS可以提高运行效率

 

4、算法复杂度分析

 

5、例题:如何利用DFS寻找最短路径?

代码:

算法执行完,得到每个点距离A点的距离。

 

6、广度优先搜索

 

7、广度优先搜索过程

选择一个元素A加入队列并标记已访问过,每次出队打印输出时,都将与A相连的节点加入队列,重复这个过程,直到队列中没有元素,表示所有节点都被访问过。

广度优先搜索的结果如下:

 

8、例题:走迷宫(BFS)

题目:

广度优先搜索更新步数,找到目的地后立即返回

代码实现

 

9、BFS时间复杂度分析

 

10、例题

题目:

解法:

让四个人在不同得层面上进行BFS

代码:

 

 

发布了151 篇原创文章 · 获赞 26 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览