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

图的遍历

时间:2014-10-04 19:29:07      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:数据结构



         bubuko.com,布布扣



,深度优先搜索


基本思想:

以图中某个顶点Vi为出发点,首先访问出发点Vi,然后任选一个Vi的未访问过的临界点Vj,Vj为新的出发点继续进行深度优先搜索,依此类推,直至图中所有顶点都被访问过。

深度优先搜索可以看成一个递归过程。


bubuko.com,布布扣

具体过程:


   首先选定结点v0为出发点,访问V0,然后从V0的邻接点V1V3V5,任选一个访问,此处我们访问V1V1有两个邻接点V0V2V0已经被访问过,我们接着访问V2 V23个邻接点,其中V1被访问过,我们选择V3或者V4访问,此处先访问V4,到了V4这里,V43个邻接点V2V3V5,其中V2被访问过,我们访问V3V3的邻接点都已访问完,我们返回V4,接着访问V5;至此,所有节点都已访问完成;


注意事项:


        1,搜索到某个顶点时,如果这个顶点的所有邻接点都被访问过,那么搜索就要回到前一个被访问过的顶点,再从该顶点的下一个未被访问的邻接点开始深度优先搜索;

                           2,深度优先搜素的顶点的访问顺序不是唯一的;




,广度优先搜索


基本思想:

从图中某个顶点Vi出发,在访问了Vi之后依次访问Vi的所有邻接点,然后依次从这些邻接点出发按广度优先索索方法遍历图的其他顶点,重复这一过程直至所有顶点被访问到;

广度优先搜索类似于树的按照层次遍历的过程;



bubuko.com,布布扣



访问过程:

首先从起点V0 出发,访问V0.VO3个未被访问的邻接点V1V3V5;

先访问V1,然后V3,最后V5

然后访问V1未被访问的邻接点V2

接着访问V3未被访问的邻接点V4

 

 

 

小结:

在广度优先搜索中,若对X的访问先于Y,则对于X的邻接点的访问也先于Y进行;也就是说广度优先搜索邻接点的寻找具有先进先出的特征;

为了保证结点这种先后的特征,可以采用队列来暂存那些刚访问过的顶点;

 




图的遍历

标签:数据结构

原文地址:http://blog.csdn.net/shuitiannailuo/article/details/39781063

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