图的遍历

2022.09.15

BFS(广度优先)

  1. 【思想】和树的层次遍历一个思想,借助一个辅助队列保存当前结点的其余的边。另外借助一个visit数组,记录哪些结点已经被访问过了。
  2. 【复杂度】
内容时间复杂度空间复杂度
辅助队列Q O(V)
邻接表O(V+E) 
邻接矩阵O(V^2) 
  1. 【单源最短路径求解】也可以用visit数组保存路径长度,(之前是保存bool类型,是否访问),如果不是0代表访问过。新的结点路径长度为刚才结点路径+1即可。

  2. 【广度优先生成树,生成森林】

    image-20220915123704164

DFS(深度优先)

  1. 【思想】类似于树的先序遍历,借助递归/栈实现。
  2. 【复杂度】
内容时间复杂度空间复杂度
递归形成的栈 O(V)
邻接表O(V+E) 
邻接矩阵O(V^2) 
  1. 【深度优先生成树,生成森林】

    image-20220915123628975

例题

  1. 下列关于广度优先算法的说法中,正确的是( )

    I. 当各边的权值相等时,广度优先算法可以解决单源最短路径问题 II. 当各边的权值不等时,广度优先算法可用来解决单源最短路径问题 III.广度优先遍历算法类似于树中的后序遍历算法 IV. 实现图的广度优先算法时,使用的数据结构是队列 A. I、 IV B. II、III、IV C. II、IV D. I、III、IV

    【答案】:A

  2. 对于一个非连通无向图G,采用深度优先遍历访问所有顶点,在 DFSTraverse 函数(见考点讲解DFS 部分)中调用DFS 的次数正好等于()。 A.顶点数 B.边数 C.连通分量数 D.不确定

    【答案】:A -> C

  3. 对一个有n个顶点、e条边的图来用邻接表表示时,进行DFS 遍历的时问复杂度为(),空间复杂度为():进行BFS 遍历的时问复杂度为(),空间复杂度为(). A. O(n) B. O(e) C. O(n+e) D. O(1)

    【答案】:CACA

  4. 对有n个顶点、e条边的图采用邻接短阵表示时,进行 DFS 遍历的时问复杂度为( ),进行 BFS 遍历的时间复杂度为() A. O(n^2) B. O(e) C. O(n+e) D. O(e^2)

    【答案】:AA

  5. 无向图G=(V,E),其中 V={a,b,c,d,e,f},E={(a,b),(a,e), (a,c), (b,e),(c,f),(f,d),(e,d)},对该图从a开始进行深度优先遍历,得到的顶点序列正确的是(). A. a, b, e, c, d,f B. a, c,f, e, b, d C. a, e, b, c,f, d D. a, e, d, f, c, b

    【答案】:abedcf,acfd,aed,D

  6. 如下图所示,在下面的5个序列中,符合深度优先遍历的序列个数是()。

    image-20220915124229741

    【答案】:D

  7. 用邻接表存储的图的深度优先遍历算法类似于树的( ),而其广度优先遍历算法类似于树的()。 A. 中序遍历 B. 先序遍历 C. 后序遍历 D. 按层次遍历

    【答案】:BD

  8. 一个有向图G的邻接表存储如下图所示,从项点1出发,对图G调用深度优先遍历所得项点序列是( );按广度优先遍历所得项点序列是( )

    img

    A. 125436 B. 124536 C. 124563 D. 362514

    【答案】:A、B

  9. 无向图G=(V,E),其中V={a.b,c,d.e.f},E={(a, b),(a.e),(a,c),(b,e),(c,f),(f,d),(e,d)},对图进行深度优先遍历,不能得到的序列( )

    A. acfdeb B. aebdfc C. aedfcb D. abecdf

    【答案】:acfdeb,aebdfc,aedfcb,D

  10. 判断有向图中是否存在回路,除可以利用拓扑排序外,还可以利用( )。 A. 求关键路径的方法 B.求最短路径的 Dikstra 算法 C.深度优先遍历算法 D.广度优先遍历算法

    【答案】:C

  11. 使用DFS 算法递归地遍历一个无环有向图,并在退出递归时输出相应顶点,这样得到的顶点序列是()。 A. 逆拓扑有序 B. 拓扑有序 C. 无序的 D. 都不是

    【答案】:A

  12. 设无向图G=(V,E),和G'=(V',E'),若G'是G的生成树,则下列说法中错误的是( )。 A. G'为G的子图 B. G'为G的连通分量 C. G'为G的极小连通子图且V=M D. G'是G的一个无环子图

    【答案】:B

  13. 图的广度优先生成树的树高比深度优先生成树的树高( )。 A. 小或相等 B. 小 C. 大或相等 D. 大

    【答案】:A

  14. 对有n个顶点、e条边且使用邻接表存储的有向图进行广度优先遍历,其算法的时问复杂度是( )。 A. O(n) B. O(e) C. O(n+e) D. O(ne)

    【答案】:C

  15. 【2013 统考真题】若对如下无向图进行遍历,則下列选项中,不是广度优先遍历序列的是()

    截屏2022-09-15 下午3.01.57

    【答案】:hcabde,eafgb[hcd],dbca[he],a[bhe] D

  16. 【2015 统考真题】设有向图G-(V,E)的,顶点集V= (V0,V1,V2,V3),边集B={(V0,V1),(V0,V2),(V0,V3),(V1,V3)}。若从顶点V0开始对图进行深度优先遍历,則可能得到的不同遍历序列个数是()。 A. 2 B.3 C. 4 D.5

    【答案】:D

  17. . 【2016 统考真题】下列选项中,不是下图深度优先搜索序列的是 速抠图

    【答案】:D

源码

输出结果