1、1习 题 六 树 和 二 叉 树6.1 单项选择题1. 如图 8.7 所示的 4 棵二叉树,_C_不是完全二叉树。2. 如图 8.8 所示的 4 棵二叉树,_B_是平衡二叉树。3. 在线索化二叉树中,t 所指结点没有左子树的充要条件是 B_。A. tleft=NULL B. tltag=1C. tltag=1 且 tleft=NULL D. 以上都不对4. 二叉树按某种顺序线索化后,任一结点均有指向其前驱和后续的线索,这种说法_B_。2A. 正确 B. 错误5. 二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法_A_。A. 正确 B. 错误6. 由于二叉树中每个结点的度最大
2、为 2,所以二叉树是一种特殊的树,这种说法_B_。A. 正确 B. 错误7. 设高度为 h 的二叉树上只有度为 0 和度为 2 的结点,则此类二叉树中所包含的结点数至少为_B_。A. 2h B. 2h-1 C. 2h+1 D. h+1 a8. 如图 8.9 所示二叉树的中序遍历序列_B_。A. abcdgef B. dfebagc C. dbaefcg D. defbagc9. 已知某二叉树的后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是D_。A. acbed B. decab C. deabc D. cedba10设 a,b 为一棵二叉树上的两个结点,在中序遍历时
3、,a 在 b 前的条件是 B 。Aa 在 b 的右方 Ba 在 b 的左方3Ca 是 b 的祖先 Da 是 b 的子孙11. 假定在一棵二叉树中,双分支结点数为 15,单分支结点数为 30 个,则叶子结点数为 个。BA15 B16 C17 D4712.某二叉树的前序遍历结点访问顺序是 abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是 D_ _。A. bdgcefha B. gdbecfha C. bdgaechf D. gdbehfca13. 二叉树为二叉排序树的充分必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。这种说法_B_ 。A. 正
4、确 B. 错误14. 按照二叉树的定义,具有 3 个结点的二叉树有_C_种。A. 3 B. 4 C. 5 D. 615. 一棵二叉树如图 8.10 所示,其中序遍历的序列为_B_。A. abdgcefh B. dgbaechf C. gdbehfca D. abcdefgh16. 树的基本遍历策略可分为先根遍历和后根遍历;二叉树的基本遍历策略可分为先序遍4历、中序遍历和后序遍历。这里,我们把由树转化得到的二叉树叫做这棵数对应的二叉树。结论_A_是正确的。A. 树的先根遍历序列与其对应的二叉树的先序遍历序列相同B. 树的后根遍历序列与其对应的二叉树的后序遍历序列相同C. 树的先根遍历序列与其对应
5、的二叉树的中序遍历序列相同D. 以上都不对17. 深度为 5 的二叉树至多有_C_个结点。A. 16 B. 32 C. 31 D. 1018. 在一非空二叉树的中序遍历序列中,根结点的右边_A_。A. 只有右子树上的所有结点 B. 只有右子树上的部分结点C. 只有左子树上的部分结点 D. 只有左子树上的所有结点19. 树最适合用来表示_C_ 。A. 有序数据元素 B. 无序数据元素 C. 元素之间具有分支层次关系的数据 D. 元素之间无联系的数据20. 任何一棵二叉树的叶结点在先序、中序和后序遍历序列中的相对次序_A_。A. 不发生改变 B. 发生改变 C. 不能确定 D. 以上都不对21.
6、实现任意二叉树的后序遍历的非递归算法而不使用栈结构,最佳方案是二叉树采用_C_存储结构。A. 二叉链表 B. 广义表存储结构 C. 三叉链表 D. 顺序存储结构22. 对一个满二叉树,m 个树叶, n 个结点,深度为 h,则_D_ 。A. n=h+m B. h+m=2n C. m=h-1 D. n=2 h-123. 如果某二叉树的前序为 stuwv,中序为 uwtvs,那么该二叉树的后序为_C_。A. uwvts B. vwuts C. wuvts D. wutsv24.具有五层结点的二叉平衡树至少有_B_个结点。F(n)=F(n-1)+F(n-2)+1, 1 是根节点,F(n-1)是左子树的
7、节点数量,F(n-2) 是右子树的节点数量A. 10 B. 12 C. 15 D. 1725. 设 n,m 为一棵二叉树上的两个结点,在中序遍历时,n 在 m 前的条件是_C_。A. n 在 m 右方 B. n 是 m 祖先 C. n 在 m 左方 D. n 是 m 子孙56.2 填空题(将正确的答案填在相应的空中)1. 有一棵树如图 8.12 所示,回答下面的问题: 这棵树的根结点是_K1_ ; 这棵树的叶子结点是_K2,K5,K7,K4_; 结点 k3 的度是_2_; 这棵树的度是_3_; 这棵树的深度是_4_; 结点 k3 的子女是_K5,K6_; 结点 k3 的父结点是_K1_ ;2.
8、 指出树和二叉树的三个主要差别_树的结点个数至少为 1,而二叉树的结点个数可以为0; 树中结点的最大度数没有限制,而二叉树结点的最大度数为 2; 树的结点无左、右之分,而二叉树的结点有左、右之分。3. 从概念上讲,树与二叉树是两种不同的数据结构,将树转化为二叉树的基本目的是_利用二叉树的已有算法解决树的有关问题_。4. 一棵二叉树的结点数据采用顺序存储结构,存储于数组 t 中,如图 8.13 所示,则该二6叉树的链接表示形式为_ _。5. 深度为 k 的完全二叉树至少有_2 k-1_个结点。至多有_2 k-1_个结点,若按自上而下,从左到右次序给结点编号(从 1 开始) ,则编号最小的叶子结点
9、的编号是_2 k-2+1_。6. 在一棵二叉树中,度为零的结点的个数为 n 0,度为 2 的结点的个数为 n 2,则有n0=_n2+1_。7. 一棵二叉树的第 i(i1)层最多有_2 i-1_个结点;一棵有 n(n0)个结点的满二叉树共有_ 2 log2n+1-1_个叶子和_2 log2n+1-1_个非终端结点。8. 结点最少的树为_只有一个结点的树_,结点最少的二叉树为_空二叉树_。9. 现有按中序遍历二叉树的结果为 abc,问有_5_种不同形态的二叉树可以得到这一遍历结果,这些二叉树分别是_。10. 根据二叉树的定义,具有三个结点的二叉树有_5_种不同的形态,它们分别是_参照楼上_。11.
10、 由如图 8.17 所示的二叉树,回答以下问题: 其中序遍历序列为_dgbaechif_; 其前序遍历序列为_ abdgcefhi_; 其后序遍历序列为_gdbeihfca_; 该二叉树的中序线索二叉树为_ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21e a f d g c j l h b图 8.13 一棵二叉树的顺序存储数组 t7_; 该二叉树的后序线索二叉树为_; 该二叉树对应的森林是_。12. 已知一棵树如图 8.20 所示,转化为一棵二叉树,表示为8_ _。13. 以数据集4,5,6,7,10,12,18为结点权值所构造的
11、Huffman 树为_,其带权路径长度为_165_。6.3 算法设计题:1试编写算法,对一棵以孩子-兄弟链表表示的树统计叶子的个数。2. 一棵度为 2 的树与一棵二叉树有何区别?3. 一棵含有 N 个结点的 k 叉树,可能达到的最大深度和最小深度各为多少?94. 证明:一棵满 k 叉树上的叶子结点数 n 和非叶子结点数 n 之间满足以下关系:01n =(k-1)n +1015. 请对下图所示二叉树进行后序线索化,为每个空指针建立相应的前驱或后继线索。6. 画出和下列已知序列对应的树 T:树的先根次序访问序列为 GFKDAIEBCHJ;树的后根次序访问序列为 DIAEKFCJHBFG。7. 假设
12、用于通讯的电文仅有八个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。试为这八个字母设计哈夫曼编码。使用 0-7 的二进制表示形式是另一种编码方案。对于上述实例,比较两种方案的优缺点。8. 假设一棵 二叉树的先序序列为 EBADCFHGIKJ 和中序序列为 ABCDEFGHIJK。请画出该树。9. 编写按层次顺序(同一层自左至右)遍历二叉树的算法。习 题 七 图7.1 单项选择题1. 在一个图中,所有顶点的度数之和等于所有边数的_A_倍。A. 1/2 B. 1 C. 2 D. 4 2. 在一个有向图中,所有顶点的入度之和等于
13、所有顶点的出度之和的_B_倍。A. 1/2 B. 1 C. 2 D. 4ADGGCE FHB103. 一个有 n 个顶点的无向图最多有_C_条边。A. n B. n(n-1) C. n(n-1)/2 D. 2n4. 具有 4 个顶点的无向完全图有_A_ 条边。A. 6 B. 12 C. 16 D. 205. 具有 6 个顶点的无向图至少应有_A_ 条边才能确保是一个连通图。A. 5 B. 6 C. 7 D. 86. 在一个具有 n 个顶点的无向图中,要连通全部顶点至少需要_C_条边。A. n B. n+1 C. n-1 D. n/27. 对于一个具有 n 个顶点的无向图,若采用邻接矩阵表示,则
14、该矩阵的大小是_D_。A. n B. (n-1)2 C. n-1 D. n28. 对于一个具有 n 个顶点和 e 条边的无向图,若采用邻接表表示,则表头向量的大小为_A_;所有邻接表中的接点总数是 _C_。 A. n B. n+1 C. n-1 D. n+e A. e/2 B. e C.2e D. n+e 9. 已知一个图如图 9.5 所示,若从顶点 a 出发按深度搜索法进行遍历,则可能得到的一种顶点序列为_D_;按宽度搜索法进行遍历,则可能得到的一种顶点序列为_。 A. a,b,e,c,d,f B. e,c,f,e,b,d C. a,e,b,c,f,d D. a,e,d,f,c,b A. a
15、,b,c,e,d,f B. a,b,c,e,f,d C. a,e,b,c,f,d D. a,c,f,d,e,b10. 已知一有向图的邻接表存储结构如图 9.6 所示。123453 24 52 4图 9.6 一个有向图的邻接表存储结构11 根据有向图的深度优先遍历算法,从顶点 v1 出发,所得到的顶点序列是_C_。A. v1,v2,v3,v5,v4 B. v1,v2,v3,v4,v5C. v1,v3,v4,v5,v2 D. v1,v4,v3,v5,v2 根据有向图的宽度优先遍历算法,从顶点 v1 出发,所得到的顶点序列是_B_。A. v1,v2,v3,v4,v5 B. v1,v3,v2,v4,v
16、5C. v1,v2,v3,v5,v4 D. v1,v4,v3,v5,v211. 采用邻接表存储的图的深度优先遍历算法类似于二叉树的_A_。A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 按层遍历12. 采用邻接表存储的图的宽度优先遍历算法类似于二叉树的_D_。A. 先序遍历 B. 中序遍历 C. 后序遍历 D. 按层遍历13. 判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以利用_D_。A. 求关键路径的方法 B. 求最短路径的 Dijkstra 方法C. 宽度优先遍历算法 D. 深度优先遍历算法7.2 填空题(将正确的答案填在相应饿空中)1. n 个顶点的连通图至少_n-1
17、_ 条边。2. 在无权图 G 的邻接矩阵 A 中,若(vi,vj)或vi,vj属于图 G 的边集合,则对应元素 Aij等于_1_,否则等于_0_。3. 在无向图 G 的邻接矩阵 A 中,若 Aij等于 1,则 Aji 等于_1_。4. 已知图 G 的邻接表如图 9.7 所示,其从顶点 v1 出发的深度有限搜索序列为_,其从顶点 v1 出发的宽度优先搜索序列为_。V1v2v3v4 v5v6 V2 V5 V4 v3 V5 V4 V6 V3 V6 12图 9.7 图 G 的邻接表5. 已知一个有向图的邻接矩阵表示,计算第 i 个结点的入度的方法是_。6.已知一个图的邻接矩阵表示,删除所有从第 i 个
18、结点出发的边的方法是_。7.31已知如图所示的有向图,请给出该图的:(1)每个顶点的入/出度;(2)邻接距阵; (3)邻接表;(4)逆邻接表;(5)强连通分量。2请用克鲁斯卡尔普里姆两种算法分别构造最小生成树: (1)16 11 1515 1513 16 14 1221(2)badce f12637 546121321249520151610516H224H3133. 试列出下图中全部的拓扑排序序列。4. 请用图示说明从顶点 a 到其余各顶点之间的最短路径。7.4 已知 AOE 网有 9 个结点:V1,V2,V3,V4,V5,V6,V7,V8,V9,其邻接矩阵如下:(1)请画出该 AOE 图。
19、(2)计算完成整个计划需要的时间。(3)求出该 AOE 网的关键路径。V1 V2 V3 V4 V5 V6 V7 V8 V9V1 6 4 5 V2 1 V3 1 V4 2 V5 9 7 V6 4 V7 2V8 4V9 1 2 3 564 5273913133841190436ab dfc e14习 题 八 查 找8.1 单项选择题1. 顺序查找法适合于存储结构为_B_的线性表。A. 散列存储 B. 顺序存储或链接存储C. 压缩存储 D. 索引存储2. 对线性表进行二分查找时,要求线性表必须_C_。A. 以顺序方式存储 B. 以链接方式存储C. 以顺序方式存储,且结点按关键字有序排序D. 以链接方
20、式存储,且结点按关键字有序排序3. 采用顺序查找方法查找长度为 n 的线性表时,每个元素的平均查找长度为_C_.A. n B. n/2 C. (n+1)/2 D. (n-1)/24. 采用二分查找方法查找长度为 n 的线性表时,每个元素的平均查找长度为_D_。AO(n 2) B. O(nlog2n) C. O(n) D. O(log2n)5. 有一个有序表为1,3, 9,12,32,41,45,62,75 ,77,82,95,100,当二分查找值 82 为的结点时,_C_次比较后查找成功。A. 1 B. 2 C. 4 D. 86. 设哈希表长 m=14,哈希函数 H(key)=key%11。表
21、中已有 4 个结点:H (15)=4; H (38)=5; H (61)=6; H (84)=7如用二次探测再散列处理冲突,关键字为 49 的结点的地址是_D_。A. 8 B. 3 C. 5 D. 97. 有一个长度为 12 的有序表,按二分查找法对该表进行查找,在表内各元素等概率情况下查找成功所需的平均比较次数为_B_。A. 35/12 B. 37/12 C. 39/12 D. 43/128.2 填空题(将正确的答案填在相应的空中)1. 顺序查找法的平均查找长度为 _ _;二分查找法的平均查找长度为 _ _;分块查找法(以二分查找确定块)的平均查找长度为_;哈希表查找法采用链接法处理冲突时的
22、平均查找长度为_。152. 二分查找的存储结构仅限于_顺序存储_,且是_有序的_。3. 在散列函数 H(key)=key%p 中,p 应取_小于表长的最大素数_。4. 假设在有序线性表 A120上进行二分查找,则比较一次查找成功的结点数为_1_,则比较二次查找成功的结点数为_2_,则比较三次查找成功的结点数为_4_,则比较四次查找成功的结点数为_8_,则比较五次查找成功的结点数为_5_,平均查找长度为_3.7_。5. 对于长度为 n 的线性表,若进行顺序查找,则时间复杂度为_ O(n)_;若采用二分法查找,则时间复杂度为_ O (log2n)_;6. 在散列存储中,装填因子 a 的值越大,则_
23、存取元素时发生冲突的可能性越大_;的值越小,则_。8.3 综合练习题:选取哈稀函数 H(k)=(3k)MOD 11。用开放定址法处理冲突,di=i(i=1,2,3,).试在 0-10 的散列地址空间中对关键字序列(22,41,53,46,30,13,01,67)造哈希表,并求等概率情况下查找成功时的平均查找长度。习 题 九 排 序9.1 单项选择题1. 在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的是_D_。A. 希尔排序 B. 起泡排序 C. 插入排序 D. 选择排序3. 在待排序的元素序列基本有序的前提下,效率最高的排序方法是_A_。A. 插入排序 B. 选择排序 C. 快速
24、排序 D. 归并排序4. 一组记录的关键字为(46,79,56,38,40,84) ,则利用堆排序的方法建立的初始堆为_。A. 79,46,56,38,40,80 B. 38,46, 56,79, 40,84,C. 84,79,56,46,40,38 D. 84,56,79,40,46,38165. 一组记录的关键字为(46,79,56,38,40,84) ,则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为_C_。A. 38,40,46,56,79,84 B. 40,38,46,79,56,84C. 40,38,46,56,79,84 D. 40,38,46,84,56,796.
25、一组记录的关键字为(25,48,16,35,79,82,23,40,36,72) ,其中含有 5 个长度为 2 的有序表,按归并排序的方法对该序列进行一趟归并后的结果为_A_。A. 16,25,35,48,23,40,79,82,36,72 B. 16,25,35,48,79,82,23,36,40,72C. 16,25,48,35,79,82,23,36,40,72D. 16,25,35,48,79,23,36,40,72,827. 排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为_C_。A. 希尔排序 B. 起泡排
26、序 C. 插入排序 D. 选择排序8. 排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为_D_。A. 希尔排序 B. 归并排序 C. 插入排序 D. 选择排序9. 用某种排序方法对线性表( 25,84,21,47,15,27,68,35,20)进行排序时,元素序列的变化情况如下: 25,84,21,47,15,27,68,35,20 20,15,21,25,47,27,68,35,84 15,20,21,25,35,27,47,68,84 15,20,21,25,27,35,47,68,84则所采用的排序方法是_D_ 。A. 选择排序 B. 希尔排序
27、 C. 归并排序 D. 快速排序10. 下述几种排序方法中,平均查找长度最小的是_C_。A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序11. 下述几种排序方法中,要求内存量最大的是_D_ 。A. 插入排序 B. 选择排序 C. 快速排序 D. 归并排序12. 快速排序方法在_C_情况下最不利于发挥其长处。A. 要排序的数据量太大 B. 要排序的数据中含有多个相同值C. 要排序的数据已基本有序 D. 要排序的数据个数为奇数179.2 填空题 (将正确的答案填在相应的空中)1. 在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第 7 个记
28、录 60 插入到有序表时,为寻找插入位置需比较_3 次_。2. 在堆排序,快速排序和归并排序中,若只从存储空间考虑,则应首先选取_堆_方法,其次选取_快速_方法,最后选取_归并_方法;若只从排序结果的稳定性考虑,则应选取_归并_方法;若只从平均情况下排序最快考虑,则应选取_快速_方法;若只从最坏情况下排序最快并且要节省内存考虑,则应选取_堆_方法。3. 在堆排序和快速排序中,若原始记录接近正序或反序,则选用_堆排序_,若原始记录无序,则最好选用_快速_。4. 对 n 个元素的序列进行起泡排序时,最少的比较次数是_n-1_。9.3 综合题1. 以关键字序列(503,087,512,061,908
29、,170,897,275,653,426) ,为例,手工执行以下排序算法,写出每一趟排序结束时的关键字状态:(1) 直接插入排序;(2) 希尔排序(增量 d1=5) ;(3) 快速排序;(4) 堆排序;(5) 归并排序;2. 判别以下序列是否为堆(小顶堆或大顶堆) 。如果不是,则把它调整为堆(要求记录交换次数最少) 。(1)(100,86,48,73,35,39,42,57,66,21);(2)(12,70,33,65,24,56,48,92,86,33)(3)(103,97,56,38,66,23,42,12,30,52,06,20)(4)(05,56,20,23,40,38,29,61,35,76,28,100).