-
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.总结
(最近学到数据结构的<图的存储和遍历>,留了些作业什么的,就记录一下,方便期末复习。)
主要要分清深度优先遍历和广度优先遍历,记住他们的运作方式。别的题都还好,就是关于时间复杂度的题还是会弄不太清,还是要回头复习一下时间复杂度的计算。
注意在进行深度/广度优先遍历时,所借助的分别是栈/队列来实现算法,二者并不相同。