图的遍历

图的遍历与树的遍历类似,希望从图中某一顶点出发访问图中其余顶点,且每个顶点只访问一次,这一过程就叫做图的遍历。

1.深度优先遍历

深度优先遍历,也称为深度有限搜索,简称DFS。从图中某个顶点v出发,访问此顶点,然后从v的未被访问的邻接点出发深度优先遍历图直至所有和v有路径相通的顶点都被访问到。类似于树的前序遍历。

例如:对如下的图进行深度优先遍历,假设在没碰到重复顶点的情况下始终访问最右手的顶点,访问过的顶点会被标记。

遍历过程为:

  • 从a开始,标记a。此时有3个分支b、c、e,b为最右手顶点,访问b。
  • 标记b。此时有2个分支d、c,d为最右侧顶点,访问d。
  • 标记d。此时有3个分支,f、e、c,f为最右侧顶点,访问f。
  • 标记f。此时只有一个分支e,访问e。
  • 标记e。此时有2个分支a、d,都是标记过的顶点,原路返回f。
  • f没有没有访问的分支,原路返回d。
  • d点有还有分支e、c,e为标记过的顶点,访问e。找到所有顶点。

可以看出来深度优先遍历就是一棵树的前序遍历。

2.广度优先遍历

广度优先遍历,又称为广度优先搜索,简称BFS。广度优先遍历类似于树的层序遍历。例如:从顶点a开始对如上图进行广度优先遍历。先对上图进行变形,原则是顶点a放置在最上面一层,让与它有边的顶点b、c、e放在第二层,再让与b、c、e有边的顶点d、f放在第三层。

遍历过程为:

  • 从a开始,a进队列。
  • a出队列,与a有边的顶点b、c、e进队列。
  • b出队列,与b有顶点的顶点d进队列。
  • c出队列,没有新的顶点与b有边,没有新顶点进队列。
  • e出队列,与e有边的顶点f进队列。
  • d出队列。
  • f出队列。

这么一看,和树的层序遍历过程几乎一模一样,只是要把图先改变成树的形式。

6.3深度优先遍历和广度优先遍历相关推荐

  1. 二叉树深度优先遍历和广度优先遍历

    二叉树深度优先遍历和广度优先遍历

  2. 多级树的深度优先遍历与广度优先遍历(Java实现)

    目录 多级树的深度优先遍历与广度优先遍历(Java实现) 节点模型 深度优先遍历 广度优先遍历 多级树的深度优先遍历与广度优先遍历(Java实现) 深度优先遍历与广度优先遍历其实是属于图算法的一种,多 ...

  3. 二叉树的深度优先遍历和广度优先遍历

    二叉树是一种很重要的数据结构,对于二叉树的遍历,有深度优先遍历和广度优先遍历,深度优先遍历又有先序.中序.后续遍历,广度优先遍历就是按层遍历. 1. 深度优先遍历 深度优先遍历,也就是先序.中序.后续 ...

  4. 广度优先搜索生成树怎么画_图的深度优先遍历与广度优先遍历以及最小生成树...

    图的深度优先遍历 题目:写出附从每个顶点出发的一次深度优先搜索遍历序列.在纸上画出遍历过程和序列,提交截图. 错误回答 从A点开始遍历:0124-01324-0134-0324-034 从B点开始遍历 ...

  5. 大话数据结构 17:图的深度优先遍历和广度优先遍历

    深度优先遍历 主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底-,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点 ...

  6. [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现

    [js] 解释下深度优先遍历和广度优先遍历的区别及如何实现 1.深度优先采用堆栈结构,先进后出,所占的空间较小,执行时间较长: 2.广度优先采用队列结构先进先出,所占空间较大,执行时间短,空间换时间: ...

  7. 图:图的邻接表创建、深度优先遍历和广度优先遍历代码实现

    邻接表介绍 邻接矩阵是不错的一种图存储结构,但是我们也发现,对于边数相对顶点较少的图,这种结构比较较浪费存储空间.如果不想浪费存储空间,大家肯定会先到链表.需要空间的时候再才想内存去申请,同样适用于图 ...

  8. 图:图的邻接矩阵创建、深度优先遍历和广度优先遍历详解

    邻接矩阵介绍 直接说,邻接矩阵是图的一种存储结构.那么图是什么呢?图是一种逻辑结构,和线性结构.树形结构.集合结构一样 是一种逻辑结构用来描述数据对象中的数据元素之间的关系.来看下图的定义:图(Gra ...

  9. 数据结构之图:邻接矩阵和邻接表、深度优先遍历和广度优先遍历

    简介 线性表是一种线性结构,除了头结点和尾节点,线性表的每个元素都只有一个前取节点和一个后继节点.而树结构则相较于线性表更加复杂,它描述的关系为数据元素之间的父子关系,也是现实世界父子关系的缩影, 一 ...

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

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

最新文章

  1. war包部署到tomcat的疑问
  2. IP地址、子网掩码、网关的概念—Vecloud微云
  3. 文档null一段 虚拟机操作
  4. 一文整理深度学习【深度学习win10的Docker配置】
  5. Hadoop学习笔记—15.HBase框架学习(基础知识篇)
  6. tomcat防cc_浅析Tomcat防止资料被锁的方式
  7. python的内存管理机制及调优手段_Python的内存管理机制及调优手段?
  8. Windows 8 Directx 开发学习笔记(七)水波纹的实现
  9. Visual Studio Code配置
  10. 苹果mac交互原型设计软件:Axure RP
  11. 基于自抗扰控制adrc的高速列车运行控制算法研究
  12. 502 bad gateway
  13. xp系统计算机启动时灰色界面,XP系统任务管理器是灰色的打不开怎么办
  14. 安全算法-对称加密与非对称加密
  15. Dubbo 第一章:详情版
  16. html多行注释如何实现,javascript多行注释如何实现
  17. 电脑内存占用过高怎么办 电脑内存占用过高解决方法
  18. 阿里p8整理的这套K8S手册,我看谁还没有看过
  19. 【web项目】任务倒计时网页
  20. Unity3d 实现落叶飘效果

热门文章

  1. 一寸照纯红色底图片_红底证件照换成蓝色背景,边缘怎样处理,才能让照片更自然呢?...
  2. 如果你毕业想进央企, 那就选这些大学, 性价比很高
  3. 关闭appleid双重认证_Apple ID 被停用如何解决?
  4. --legacy-peer-deps 作用
  5. 提升幸福感的100件小事
  6. 中国芯绝配:普华推全新龙芯3A3000操作系统
  7. HTML页面中显示时间
  8. Fiddler 移动端/模拟器安装证书
  9. ppi 各代iphone_各代iPhone逻辑分辨率与物理分辨率
  10. 推荐一些可以获取免费的国外的原版书籍(电子版)网站