赞
踩
图的遍历和树的遍历类似,我们希望从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次,这一过程就叫做图的遍历(Traverse Graph)。
图的遍历方法一般有两种,第一种是深度优先遍历(Depth First Search),也有称为深度优先搜索,简称为DFS。第二种是《广度优先遍历(Breadth First Search)》,也有称为广度优先搜索,简称为BFS。我们在《堆栈与深度优先搜索》中已经较为详细地讲述了深度优先搜索的策略,这里不再赘述。我们也可以把图当作一个迷宫,设定一个起始点,走遍所有图的顶点并打上标记,直到访问遍所有的顶点为止。如图7-5-2所示,需要注意的是结点I 是在从A->H,H->回溯->D,D->I 的时候被访问到的,而且我们是从A开始递归进入下面的路径,所以会一直回溯到原点A为止表示遍历结束。
下面只给出邻接矩阵和邻接表存储方式时的图的深度优先遍历的算法代码,没有给出整体可供测试运行的代码,其实只需要再写一个创建图的函数就可以进行整体测试了,可以参考《邻接矩阵创建图》和《邻接表创建图》
一、如果我们使用的是邻接矩阵的方式,则代码如下:(改编自《大话数据结构》)
1
2 3 4 5 6 7 8 9 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。