图的遍历:从给定图中任意指定的顶点(称初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次,这个过程称为图的遍历。如果给定图是连通的无向图或者是强连通的有向图,则遍历过程一次即可完成,并按顶点访问的先后顺序得到由该图所有顶点组成的一个序列。
由于沿着图中的一条路径访问过某一顶点后,可能还会沿着另一条路径回到该顶点,即存在回路。为了避免同一个顶点被重复访问,必须记住每个被访问过的顶点。因此可设置一个访问标志数组visited[],当顶点i被访问过时,数组中元素visited[i]置为1;否则置为0。
深度优先遍历(DFS)过程:从图中某个初始顶点v出发,首先访问初始顶点v,然后选择一个与顶点v相邻且没被访问过的顶点w为初始顶点,再从w出发进行深度优先遍历,直到图中与当前顶点v邻接的所有顶点都被访问过为止。此遍历过程为递归过程。纵向访问顶点,用于图查找算法。
对于具有n个顶点e条边的有向图或无向图,DFS算法对图中每个顶点至多调用一次,因此其递归调用总次数为n。当访问某个顶点v时,DFS的时间主要花在从该顶点出发搜索它的邻接点上,用邻接表表示图时,需遍历该顶点对应单链表中所有相邻点,所以DF