前面的文章中我们学习了图的基本概念和存储结构,大家可以通过下面的链接学习:
这篇文章就来学习一下图的重要章节——图的遍历。
目录
一,图的遍历定义:
从已给的连通图中某一顶点出发,沿着一些边访遍图中所有的顶点,且使每个顶点仅被访问一次,就叫做图的遍历,它是图的基本运算。
图遍历的实质:找每个顶点的邻接点的过程。
要进行图的遍历,我们需要知道图的特点,从而用合适,高效的方法来实现遍历。
图有哪些特点?
图中可能存在回路,且图的任一顶点都可能与其它顶点相通,在访问完某个顶点之后可能会沿着某些边又回到了曾经访问过的顶点。
那么,如何避免在遍历时重复访问?
解决思路:
设置辅助数组 visited [n ],用来标记每个被访问过的顶点。
初始状态为0
被访问,改 visited [i]为1,防止被多次访问。
图常用的遍历有两种:
深度优先搜索(Depth First Search,DFS)
广度优先搜索(Breadth First Search,BFS)
二,深度优先搜索(DFS)
引例:
点亮迷宫中所有的灯,我们会一条道走到头,如果走不动了,再往回退寻找其他没有走过的。
因此我们可以总结DFS的详细归纳:
&nbs