本文整理于【拉勾*力扣】课程笔记,侵删~
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
代码: