前言
之前我们讲了图的存储,图最终的目的是进行遍历的,遍历的方式有哪些,我们一一分解。
(图的认识与存储:https://blog.csdn.net/weixin_42178241/article/details/125931691?spm=1001.2014.3001.5501)
图的遍历
解决问题
像解决图论搜索的问题,它是可以向多个点扩散,可我们计算机用的是线性存储,而这种问题是非线性的,我们需要将非线性问题转化成线性。
BFS
广度优先搜索
主要思想
按层次遍历,起始点层次为0,其子节点为1,其孙子节点为2,注意标记过的节点,不在标记
性质
第一次被遍历到的新节点,所对应的层次为从起始点到此节点的最短合法路径
代码思路
- 输入
- 初始化
- 队列不为空执行4 5,空执行6
- 将队首元素弹出,如果为终点跳转到6
- 扩展新节点执行3
- 输出
DFS
深度优先搜索
主要思想
一条路走到黑,按路线依次遍历,走不了回溯到上一个节点。
代码思路
- 输入
- 初始化
- 遍历起始节点
- 分别遍历子节点
- 节点回溯
- 输出
进化
某些题目对方向数组,有些改动,对地图的条件也有很大的更改,解决方案分两种:
- 建新节点
- 增加维度
总结
BFS
主要特点
队列
解决问题
- 同一个点多个线路的最短路径
DFS
主要特点
栈
解决问题
- 路径过程
- 路径条数
后记
这些知识BFS&&DFS的基础,更难的我们后面再讲。