图的遍历:深度优先遍历

  • 思维导图:
  • 深度优先遍历的原理:
  • 深度优先遍历的代码实现:
  • 深度优先遍历的性能:
  • 深度优先生成树:
  • 遍历与连通性的关系:

思维导图:

深度优先遍历的原理:


ps:
实现方法是递归+数组或者栈+数组
邻接矩阵法的DFS,BFS唯一,邻接表法不唯一

深度优先遍历的代码实现:

bool visited[MAX_TRUE_SIZE];
void DFSTraverse(Graph G){for(int i=0;i<G.vexnum;++i)visited[i] = false;for(int i=0;i<G.vexnum;++i)if(!visited[i])DFS(G,i);
}void DFS(Graph G,int v){visit(v);visited[v] = true;for(w = FirstNeighbor(G,v);w>=0;w=NextNeighbor(G,v,w))if(!visited[w])DFS(G,w);
}

深度优先遍历的性能:

深度优先生成树:

遍历与连通性的关系:

1、遍历函数的次数与连通分量的关系(只在无向图成立,有向图不成立,见2)

ps:无向图中,广度优先和深度优先算法中,都有一个每个节点都调用一次深度或广度优先遍历算法的循环,若从1开始,调用一次可遍历到1234567节点,然后234567不调用遍历算法;到节点9时,再次调用算法可遍历到89,然后9不调用遍历算法。所以,有几个连通分量,就会调用几次遍历算法

2、在有向图中,一次遍历算法可以遍历到所有节点,不能说明此有向图强连通

3、

数据结构之图的遍历:深度优先遍历(DFS)相关推荐

  1. matlab深度遍历算法,数据结构算法之动态规划(深度优先遍历)

    最近在看关于数据结构系列知识点,然后遇到一个动态规划相关的题目--邮票规划. 首先先介绍下关于DPS,也就是深度优先遍历算法吧. 深度优先遍历 深度优先遍历,从初始访问结点出发,我们知道初始访问结点可 ...

  2. 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)

    一.图的基本介绍 为什么要有图 前面我们学了线性表和树 线性表局限于一个直接前驱和一个直接后继的关系 树也只能有一个直接前驱也就是父节点 当我们需要表示多对多的关系时, 这里我们就用到了图. 图的举例 ...

  3. 图的遍历——深度优先遍历与广度优先遍历

    目录 何谓遍历? 图的遍历特点 图的遍历方式 深度优先搜索 过程分析 案例分析: 算法的代码实现 测试案例: 测试结果如下: 遍历非连通图 算法复杂度分析 额外补充 广度优先搜索 过程分析 辅助队列 ...

  4. 图 之遍历----深度优先遍历0.o

    何为深度优先遍历0.o呢?DFS是图论中的经典算法.其利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等. 基本思想:(一条路走到底 ...

  5. 邻接矩阵存储图并进行深度优先遍历

    内容: 采用邻接矩阵的形式存储图,进行图的深度优先遍历 步骤: 算法分析: 首先,图的邻接矩阵存储结构,就是用一维数组存储图中顶点的信息,用矩阵表示图中各顶点之间的邻接关系.假设图G=(V,E)有n个 ...

  6. 数据结构—无向图创建邻接矩阵、深度优先遍历和广度优先遍历(C语言版)

    无向图创建邻接矩阵.深度优先遍历和广度优先遍历 一.概念解析: (1)无向图: (2)邻接矩阵: 二.创建邻接矩阵: 三.深度遍历.广度遍历 (1)深度遍历概念: (2)广度遍历概念: 四.实例展示 ...

  7. 数据结构 之 图的存储和遍历

    2019独角兽企业重金招聘Python工程师标准>>> 2012.03.26 by zhengshihao#include<stdio.h> #define GRAPHM ...

  8. 【数据结构与算法】2.深度优先搜索DFS、广度优先搜索BFS

    原文链接:https://blog.csdn.net/qq_41681241/article/details/81432634 总结 一般来说,广搜常用于找单一的最短路线,或者是规模小的路径搜索,它的 ...

  9. 图--广度优先遍历/深度优先遍历(c语言实现)

    //不能通过编译,没有引入队列头文件 1 #include<stdlib.h> 2 #define MAX_VERTEX_NUM; 3 typedef int infoType; 4 ty ...

  10. 图 邻接矩阵的深度优先遍历

    void DFS( MGraph Graph, Vertex V, void (*Visit)(Vertex) ) {//访问当前位置 然后递归寻找//当前访问的是V这个结点if (!Visited[ ...

最新文章

  1. CentOS包管理器yum
  2. 快速学习nodejs系列:六、nodejs特性3--事件驱动
  3. 前端必知必会HTTP请求系列(二)简单一点的HTTP协议
  4. etc的常见算法_谈常用的几个机器学习算法,学懂算法也可以这么简单!
  5. pstack命令学习
  6. JVM系列一:Java虚拟机与操作系统结构比较
  7. 我们为什么这样选择损失函数
  8. jQuery如何退出each循环的?
  9. C/C++中的联合 union
  10. 极客大学架构师训练营 数据结构与算法 平衡二叉树 红黑树 动态规划 遗传算法 第15课 听课总结
  11. 反编译apk获取unity资源流程分享
  12. 查看redis安装路径
  13. 关于如何使用java,将Office文件转换成PDF格式
  14. 12306 抢票软件已被限制
  15. C语言小项目--扫雷小游戏
  16. JS模块化编程 - 一文看懂Common.js,AMD,CMD,ES6之间的区别和使用
  17. 增加检测类别?这是一份目标检测的基础指南
  18. windows 防火墙开启导致ping不通
  19. 全排列牛客和L46,L47
  20. 银行测试(8)-支付测试用例

热门文章

  1. 大部分人不知道的 5 个强大HTML5 API
  2. html表单php连接mysql数据库_使用HTML表单和PHP更新MySQL
  3. java 重启tomcat_linux下重启tomcat的命令
  4. php scandir遍历,php使用scandir()函数扫描指定目录下所有文件示例
  5. ​易生信-宏基因组2020 积微学术论坛:基于大数据整合准确预测土壤的枯萎病发生...
  6. 刘小乐教授 - 生物信息学云论坛第三场报告会
  7. 文章用图的修改和排版(2)
  8. TV Distortion Bundle mac - AE画面像素破损信号干扰失真插件
  9. yanobox nodes 3 Mac新一代点线粒子特效运动图形插件
  10. 小学奥数 7830 求小数的某一位 python