图的遍历方式
图的遍历就是从图中某个顶点出发游历图,访遍图中其余顶点,并且使图中的每个顶点仅被访问一次的过程。
通常我们使用两种遍历方式:
深度优先遍历和广度优先遍历。
深度优先遍历
深度优先遍历(DepthFirstSearch)也称为深度优先搜索,简称DFS。
深度优先遍历从某个顶点出发,访问此顶点,然后从v的未被访问的邻接点触发深度优先遍历图,直至所有和v有路径想通的顶点都被访问到。
这样我们一定就访问到所有结点了吗,没有,可能还有的分支我们没有访问到,所以需要回溯(一般情况下都设置一个数组,来记录顶点是否访问到,如果访问到就不执行DFS算法,如果未被访问过就执行DFS算法)
🔔提示
- 深度优先搜索遍历连通图的过程类似于树的先根遍历;
- 深度优先遍历过程有两个关键操作:
a. 如何判断结点V是否被访问过?
答:为每个顶点v设立一个访问标志visited[v]
b.如何求V的临界点?
根据图的存储结构来确定(例如:对于邻接表而言,通过顶点向量和对应的单链表来查找邻接点)
💻深度优先遍历的算法:
从图中任一顶点 vi 出发