码迷,mamicode.com
首页 > 其他好文 > 详细

图的深度优先遍历DFS

时间:2014-06-08 23:50:57      阅读:420      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   java   

图的深度优先遍历是树的前序遍历的应用,其实就是一个递归的过程,我们人为的规定一种条件,或者说一种继续遍历下去的判断条件,只要满足我们定义的这种条件,我们就遍历下去,当然,走过的节点必须记录下来,当条件不满足后,我们就return,回到上一层,换个方向继续遍历。

模板:

bubuko.com,布布扣
 1 //邻接矩阵存储方式
 2 bool visited[MAX];
 3 void dfs(MGraph G,int i)
 4 {
 5     int j;
 6     visited[i]=true;
 7     cout<<G.vex[i]<<endl;  //这个只是进行的操作而已
 8     for(j=0;j<G.numVertexes;j++)
 9         if(G.arc[i][j]==1&&!visited[j])
10             dfs(G,j);
11 }
12 
13 void init(MGraph G)
14 {
15     int i;
16     for(i=0;i<G.numVertexes;i++)
17         visisted[i]=false;   //初始化
18     for(i=0;i<G.numVertexes;i++)
19         if(!visited[i])
20             dfs(G,i);
21 }
bubuko.com,布布扣

如果存储方式为邻接表的话,只是改变了寻找下一个节点的方式而已。

效率问题:邻接表结构适合点多边少的稀疏图,然后邻接矩阵,因为是二维数组,要查找每个顶点的邻接点需要访问矩阵中的所有元素,因此需要O(n^2)的时间

 

图的深度优先遍历DFS,布布扣,bubuko.com

图的深度优先遍历DFS

标签:c   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/jhldreams/p/3775378.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!