图的深度遍历和广度遍历算法

图的深度遍历和广度遍历算法

图的深度遍历可以简单理解为一条道走到黑,首先访问图中任一起始顶点v,再访问与v顶点邻接且未被访问过的顶点w1,再访问与w1邻接且未被访问过的顶点w2,重复上述操作,若不能继续向下访问时,则回退,直到所有的顶点被访问完。
具体实现算法用到了递归。需要借助一个visited数组,对已访问过的顶点做标记。
图的广度便利类似于树的层次遍历,一层一层的向外访问。首先从定顶点v出发,接着访问v所有的未被访问过的邻接顶点w1,w2,w3…然后再以此访问w1,w2,w3这些顶点的未被访问过的邻接顶点,直到所有的顶点都被访问。需要一个辅助的循环队列。当队列不为空时,就出队对头的元素(顶点),并依次访问该顶点未被访问过的邻接顶点,然后将他们依次入队。直到该循环队列为空。
关于深度便利和广度遍历的算法比较
它们的空间复杂度都相同,都是O(n),最差的情况图中所有的顶点都要入队或入栈(递归情况下系统会自动使栈)。
时间复杂度只与存储结构(邻接矩阵or邻接表)有关,与搜索路径无关。邻接矩阵为O(n^2),需要查找n*n的矩阵;邻接表为O (n+e),n个头结点,再根据弧查找e个边节点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值