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

图的深度遍历可以简单理解为一条道走到黑,首先访问图中任一起始顶点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个边节点。

图的深度遍历和广度遍历算法相关推荐

  1. 图的深度遍历和广度遍历

    理论部分 图的深度遍历和广度遍历都不算很难像极了二叉树的前序遍历和层序遍历,如下面的图,可以用右边的邻接矩阵进行表示,假设以顶点0开始对整幅图进行遍历的话,两种遍历方式的思想如下: 1. 深度优先遍历 ...

  2. python来进行图的深度遍历和广度遍历

    python来进行图的深度遍历和广度遍历 # -*- coding: utf-8 -*- """ Created on Sat Sep 14 18:01:27 2019@ ...

  3. 数据结构——无向图创建邻接表以及深度遍历、广度遍历(C语言版)

    摘自:数据结构--无向图创建邻接表以及深度遍历.广度遍历(C语言版) 作者:正弦定理 发布时间:2020-12-22 20:55:12 网址:https://blog.csdn.net/chinese ...

  4. 深度遍历 java_Java 实现深度遍历和广度遍历数及其应用

    一.深度遍历和广度遍历原理及实现 1.深度优先 英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次.对于上面的 ...

  5. js中树形结构的深度遍历与广度遍历

    树形结构的深度遍历与广度遍历 定义 深度遍历:一个树形结构中,由一个数据分支全部遍历完才去遍历另外一个分支,直至全部数据遍历完成. 广度遍历:先遍历最外层的分支数据,然后一层一层的进行深入遍历,直至全 ...

  6. 深度搜索问题c语言,C语言实现的图的深度搜索与广度搜索程序.doc

    C语言实现的图的深度搜索与广度搜索程序 C语言实现的图的深度搜索与广度搜索程序 /* 上机试验5-图的建立和遍历 1)建立[无向][非连通]图的邻接表存储结构,要求顶点个数不少于15个. 2)用DFS ...

  7. 【数据结构】图的深度遍历与广度遍历

    图是一种常见的数据格式,它的遍历主要分为两种: 深度优先遍历(DFS):类似于二叉树的前序前序遍历 广度优先遍历(BFS):类似于二叉树的层次遍历 一.出度与入度 在讲图的遍历之前,我们需要先了解图的 ...

  8. 深度遍历 java_java 图论一 深度遍历和广度遍历

    图对建模很有帮助. 图的基本知识: Java实现图的两种方法 1邻接矩阵 邻接矩阵是用二维数据,使用1代表节点间有边,如下表格: A B C D A 0 1 1 1 B 1 0 0 1 C 1 0 0 ...

  9. 二叉树笔记(深度遍历与广度遍历+13道leetcode题目(深度3道、广度10道))

    本文章为结合leetcode题目以及公众号"代码随想录"的文章所做的笔记! 感觉代码随想录的题目整理真的很好,比自己盲目刷题好很多. 目录 1.二叉树小记 1.满二叉树与完全二叉树 ...

最新文章

  1. 无需成对示例、无监督训练,CycleGAN生成图像简直不要太简单
  2. MySQL数据库备份和还原的常用命令小结
  3. 《algorithm-note》算法笔记中文版正式发布!
  4. MySQL中的show full columns from 表名
  5. 深度学习(三十)贪婪深度字典学习
  6. Android 数据库综述(一) 数据库片的升级与数据的迁移操作
  7. 国产手机可以复制苹果的成功吗?
  8. 行程日志2010-03-16沙井一村(1)
  9. 本地连接无法清除DNS缓存的解决办法
  10. JAVA 实现《warcraft java版》游戏
  11. 数字孪生北京故宫,元宇宙推进旅游业进程
  12. ATTCK随笔系列之二:偷天陷阱
  13. 如何开展业务是我在离开X网之后重新学的
  14. Linux截取不定长度字符串,Linux技巧:使用 expr 命令获取子字符串和字符串长度...
  15. Android一键锁屏,去除锁屏密码
  16. typeScript学习(九)、function_type_参数限制_返回值类型
  17. 微信公众号的7个未来
  18. 【金融科技发展研究】国内研究:科技助力农业金融创新
  19. 浅谈薄膜行业MES解决方案
  20. 手写Java动态代理

热门文章

  1. javascript 框架、根基技巧、布局、CSS、控件 JavaScript 类库
  2. Win10系统出现蓝屏笑脸故障问题如何彻底解决
  3. 3.25黄金白银%今天独家操作建议附原油解套操作思路
  4. 信息安全之完美设置自己的密码
  5. 为slimerjs添加flash plugins
  6. PHP常见日期和时间函数及其用法
  7. 记一次openshift origin-node启动报错
  8. 二手市场三大顽疾背后:支付宝小程序能成闲鱼下一个流量跳板吗?
  9. wps js窗体的创建
  10. 修改Cmder默认命令提示符