图的存储与遍历

本文介绍了图的深度优先遍历(DFS)和广度优先遍历(BFS)的概念,并通过邻接矩阵展示了这两种遍历方式。DFS类似于“不撞南墙不回头”,而BFS则像“飞流直下三千尺”。文中给出了从顶点1出发的DFS和BFS生成树,并提供了相关练习题,帮助理解两者的区别。此外,还讨论了遍历的时间复杂度和在数据结构中的应用。
摘要由CSDN通过智能技术生成
  • 1.举个栗子

        给出如下邻接矩阵:

画出从顶点1出发进行遍历所得的深度优先生成树和广度优先生成树。

1.1概念

        要画出对应深度优先生成树和广度优先生成树,就先要了解什么是深度优先遍历(DFS),什么是广度优先遍历(BFS)。关于什么是深度优先遍历,它的概念其实很容易搜到,我自己对它的方式的理解就是——“不撞南墙不回头”式遍历,它的核心就是就一条路走到没路了再返回上一个分叉路口走另一条(如果没有另一条就再往回退……)。而广度优先遍历更像是“飞流直下三千尺”式遍历,它就像是山顶上有个水源要流到山脚,路途中有很多分叉的河道(岔路后还有岔路那种),水流肯定不能跳过它所有的第一个岔路直接到第二个岔路,所以先流到所有的一级岔路口然后再是二,三级……

1.2.开画

深度优先生成树:

以上是深度优先遍历过程,对应生成树 如下:

 (因为本题刚好是二叉树,就这么画了)

广度优先生成树:

  •  2.练习题

1.n个顶点的连通图用邻接矩阵表示时,该矩阵至少有(      )个非零元素。

        A. n               B.  2(n-1)              C. n/2               D.n^2

2.设图的邻接矩阵A如图所示个顶点的度依次是(        )

         A.  1, 2, 1, 2              B.  2, 2, 1, 1              C.  3, 4, 2, 3              D.  4, 4, 2, 2

3.若从无向图的任意一个顶点出发进行一次深度优先搜索可以访问图中所有的顶点,则该图一定是(        )图。

        A.  非连通              B.  连通              C.  强连通              D.  有向           

4.用邻接表表示图进行广度优先遍历时,通常借助(        )来实现算法。

        A.  栈              B.  队列              C.  树              D.   图       

5.用邻接表表示图进行深度优先遍历时,通常借助(        )来实现算法。

        A.  栈              B.  队列              C.  树              D.   图

6.深度优先遍历类似于二叉树的(        )。

        A.  先序遍历              B.  中序遍历              C.  后续遍历              D.  层次遍历

7.广度优先遍历类似于二叉树的(        )。

        A.  先序遍历              B.  中序遍历              C.  后续遍历              D.  层次遍历 

8.图的BFS生成树的树高比DFS生成树的树高(        )。

        A.  小              B.  相等              C.  小或相等              D.  大或相等

9.已知图的邻接矩阵如图,则从顶点v0出发按深度优先遍历的结果是(        )。

  A. 0243156         B.  0136542        C.  0134256        D.  0361542 

10.已知图的邻接表如图,则从顶点v0出发按广度优先遍历的结果是(        ),按深度优先遍历的结果是(        )。

        A. 0 1 3 2               B.  0 2 3 1              C.  0 3 2 1              D.  0 1 2 3    

11.对于有n个顶点,e条边且使用邻接表存储的有向图进行广度优先遍历,其算法的时间复杂度是(        )。

        A.   O(n)             B. O(e)               C.  O(n+e)              D.  O(n*e)

12,若对如图所示的无向图进行遍历,则下列选项中,不是广度优先遍历序列的是(        )。

         A.  h, c, a, b, d, e, g, f              B. e, a, f, g, b, h, c, d               

        C.  d, b, c, a, h, e, f, g              D. a, b, c, d, h, e, f, g 

13.设有向图G<V,E>,顶点集V={V0,V1,V2,V3},E={<V0,V1>,<V0,V2>,<V0,V3>,<V1,V3>},若从顶点V0开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是(        )。

        A.  2               B.  3              C.  4               D.  5 

  • 3.总结

  (最近学到数据结构的<图的存储和遍历>,留了些作业什么的,就记录一下,方便期末复习。)

        主要要分清深度优先遍历和广度优先遍历,记住他们的运作方式。别的题都还好,就是关于时间复杂度的题还是会弄不太清,还是要回头复习一下时间复杂度的计算。

        注意在进行深度/广度优先遍历时,所借助的分别是栈/队列来实现算法,二者并不相同。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悦崽在线搬砖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值