一,前言
和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图中所有顶点进行访问,且仅访问一次。
但是图的遍历相对树而言要更为复杂。因为图中的任意顶点都可能与其他顶点相邻,所以在图的遍历中必须记录已被访问的顶点,避免重复访问。
一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算法就是基于广度优先的思想成立的。
。
二,基本思路
2.1:如何实现
- 需要一个容器,这具有先进先出,后进后出的特点--FIFO队列。
- 每次的操作是重复的,那就是用循环。
- 循环结束的条件:队列为空。
2.2:队列queue实现
只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作
#include<queue>队列和优先队列两种。
注意:
- 加入、删除都是规定好的方向,所以是push 、