《课程(本科)《数据结构》第七章试题&参考答案.docx》由会员分享,可在线阅读,更多相关《课程(本科)《数据结构》第七章试题&参考答案.docx(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 1 页 共 19 页课程(本科) 数据结构第七章试题&参考答案一、单项选择题1. 若搜索每一个元素的概率相等,则在长度为 n 的顺序表上搜索到表中任一元素的平均搜索长度为( ) 。A. n B. n+1 C. (n-1)/2 D. (n+1)/22. 对长度为 10 的顺序表进行搜索,若搜索前面 5 个元素的概率相同,均为 1/8,搜索后面 5 个元素的概率相同,均为 3/40,则搜索到表中任一元素的平均搜索长度为( ) 。A. 5.5 B. 5 C. 39/8 D. 19/43. 对长度为 3 的顺序表进行搜索,若搜索第一个元素的概率为 1/2,搜索第二个元素的概率为 1/3,搜索第三个
2、元素的概率为 1/6,则搜索到表中任一元素的平均搜索长度为( ) 。A. 5/3 B. 2 C. 7/3 D. 4/34. 对长度为 n 的有序单链表,若搜索每个元素的概率相等,则顺序搜索到表中任一元素的平均搜索长度为( ) 。A. n/2 B. (n+1)/2 C. (n-1)/2 D. n/45. 对于长度为 n 的有序顺序表,若采用折半搜索,则对所有元素的搜索长度中最大的为( )的值的向上取整。A. log2(n+1) B. log2n C. n/2 D. (n+1)/26. 对于长度为 n 的有序顺序表,若采用折半搜索,则对所有元素的搜索长度中最大的为( )的值的向下取整加一。A. l
3、og2(n+1) B. log2n C. n/2 D. (n+1)/27. 对于长度为 9 的有序顺序表,若采用折半搜索,在等概率情况下搜索成功的平均搜索长度为( 第 2 页 共 19 页)的值除以 9。A. 20 B. 18 C. 25 D. 228. 对于长度为 18 的有序顺序表,若采用折半搜索,则搜索第 15 个元素的搜索长度为( ) 。A. 3 B. 4 C. 5 D. 69. 对具有 n 个元素的有序顺序表进行折半搜索,则搜索任一元素的时间复杂度为( ) 。A. O(n) B. O(n2) C. O(1) D. O(log2n)10. 在一棵高度为 h 的具有 n 个元素的二叉搜索
4、树中,搜索所有元素的搜索长度中最大的为( ) 。A. n B. log2n C. (h+1)/2 D. h+111. 从具有 n 个结点的二叉搜索树中搜索一个元素时,在等概率情况下进行成功搜索的时间复杂度大致为( ) 。A. O(n) B. O(1) C. O(log2n) D. O(n2)12. 从具有 n 个结点的二叉搜索树中搜索一个元素时,在最坏情况下进行成功搜索的时间复杂度为( ) 。A. O(n) B. O(1) C. O(log2n) D. O(n2)13. 向具有 n 个结点的二叉搜索树中插入一个元素时,其时间复杂度大致为( ) 。A. O(1) B. O(log2n ) C.
5、O(n) D. O(nlog2n)14. 在一棵 AVL 树(高度平衡的二叉搜索树)中,每个结点的平衡因子的取值范围是( ) 。A. -11 B. -22 C. 12 D. 0115. 向一棵 AVL 树(高度平衡的二叉搜索树)插入元素时,可能引起对最小不平衡子树的调整过程,此调整分为( )种旋转类型。第 3 页 共 19 页A. 2 B. 3 C. 4 D. 516. 向一棵 AVL 树(高度平衡的二叉搜索树)插入元素时,可能引起对最小不平衡子树的左单或右单旋转的调整过程,此时需要修改相关( )个结点指针域的值。A. 2 B. 3 C. 4 D. 517. 向一棵 AVL 树(高度平衡的二叉
6、搜索树)插入元素时,可能引起对最小不平衡子树的双向旋转的调整过程,此时需要修改相关( )个结点指针域的值。A. 2 B. 3 C. 4 D. 5参考答案: 1. D 2. C 3. A 4. B 5. A6. B 7. C 8. A 9. D 10. D11. C 12. A 13. B 14. A 15. C16. A 17. C二、填空题1. 以顺序搜索方法从长度为 n 的顺序表或单链表中搜索一个元素时,其时间复杂度为_。2. 对长度为 n 的搜索表进行搜索时,假定搜索第 i 个元素的概率为 pi,搜索长度(即在搜索过程中依次同有关元素比较的总次数)为 ci,则在搜索成功情况下的平均搜索长
7、度的计算公式为_。3. 假定一个顺序表的长度为 40,并假定搜索每个元素的概率都相同,则在搜索成功情况下的平均搜索长度为_。4. 以折半搜索方法从长度为 n 的有序表中搜索一个元素时,时间复杂度为_。5. 从有序表 (12, 18, 30, 43, 56, 78, 82, 95) 中折半搜索元素 56 时,其搜索长度为_。第 4 页 共 19 页6. 假定对长度 n = 50 的有序表进行折半搜索,则对应的判定树中最后一层的结点数为_个。7. 从一棵二叉搜索树中搜索一个元素时,若给定值小于根结点的值,则需要向_继续搜索。8. 从一棵二叉搜索树中搜索一个元素时,若给定值大于根结点的值,则需要向_
8、继续搜索。9. 向一棵二叉搜索树中插入一个新元素时,若该新元素的值小于根结点的值,则应把它插入到根结点的_上。10. 向一棵二叉搜索树中插入一个新元素时,若该新元素的值大于根结点的值,则应把它插入到根结点的_上。11. 向一棵二叉搜索树_一个元素时,若查找到的根结点为空值,则应把该元素结点链接到这个空指针位置上。12. 根据 n 个元素建立一棵二叉搜索树的时间复杂度性大致为_。13. 在一棵 AVL 树(高度平衡的二叉搜索树)中,每个结点的左子树高度与右子树高度之差的绝对值不超过_。14. 根据一组记录 ( 56, 42, 50, 64, 48 ) 依次插入结点生成一棵 AVL 树(高度平衡的
9、二叉搜索树)时,当插入到值为_的结点时需要进行旋转调整。 15. 根据一组记录 ( 56, 74, 63, 64, 48 ) 依次插入结点生成一棵 AVL 树(高度平衡的二叉搜索树)时,当插入到值为 63 的结点时需要进行_调整。16. 根据一组记录 ( 56, 42, 38, 64, 48 ) 依次插入结点生成一棵 AVL 树(高度平衡的二叉搜索树)时,当插入到值为 38 的结点时需要进行_调整。第 5 页 共 19 页17. 根据一组记录 ( 56, 42, 73, 50, 64, 48, 22 ) 依次插入结点生成一棵 AVL 树(高度平衡的二叉搜索树)时,当插入到值为_的结点时才出现不
10、平衡,需要进行旋转调整。 18. 在一棵 AVL 树(高度平衡的二叉搜索树)上进行插入或删除元素时,所需的时间复杂度为_。参考答案: 1. O(n) 2. 3. 20.5 4. O(log2n)10niicp5. 3 6. 19 7. 左子树 8. 右子树9. 左子树 10. 右子树 11. 插入 12. O(nlog2n)13. 1 14. 50 15. 先右后左双旋转 16. 右单旋转17. 48 18. O(lon2n) 三、判断题1. 在顺序表中进行顺序搜索时,若各元素的搜索概率不等,则各元素应按照搜索概率的降序排列存放,则可得到最小的平均搜索长度。2. 进行折半搜索的表必须是顺序存储
11、的有序表。3. 能够在链接存储的有序表上进行折半搜索,其时间复杂度与在顺序存储的有序表上相同。4. 假定用两个有序单链表表示两个集合,则这两个集合交运算得到的集合单链表,其长度小于参加运算的任一个集合单链表的长度。5. 假定用两个有序单链表表示两个集合,则这两个集合的差运算得到的集合单链表,其长度小于参加运算的任一个集合单链表的长度。第 6 页 共 19 页6. 折半搜索所对应的判定树,既是一棵二叉搜索树,又是一棵理想平衡二叉树(它的特点是除最底层结点外其他各层结点数都是满的,最底层的若干结点可能散布在该层各处) 。7. 对二叉搜索树进行前序遍历得到的结点序列是一个有序序列。8. 在由 n 个
12、元素组成的有序表上进行折半搜索时,对任一个元素进行搜索的长度(即比较次数)都不会大于 log2n+1。9. 根据 n 个元素建立一棵二叉搜索树的时间复杂度大致为 O(log2n)。10. 根据 n 个元素建立一棵二叉搜索树的时间复杂度大致为 O(nlog2n)。11. 对于同一组记录,若生成二叉搜索树时插入记录的次序不同则得到不同结构的二叉搜索树。12. 对于同一组记录,生成二叉搜索树的结构与插入记录的次序无关。13. 对于两棵具有相同记录集合而具有不同结构的二叉搜索树,按中序遍历得到的结点序列是相同的。14. 在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越大的结点离树根越近,则得到的
13、是最优二叉搜索树。15. 在二叉搜索树中,若各结点的搜索概率不等,使得搜索概率越小的结点离树根越近,则得到的是最优二叉搜索树。参考答案: 1. 是 2. 是 3. 否 4. 是 5. 否6. 是 7. 否 8. 是 9. 否 10. 是11. 是 12. 否 13. 是 14. 是 15. 否第 7 页 共 19 页四、运算题1. 一个一维数组 a10中存储着一个有序表,该有序表为:(15, 26, 34, 39, 45, 56, 58, 63, 74, 76 ),根据折半搜索所对应的判定树,写出该判定树的广义表表示,并求出在等概率情况下搜索成功的平均搜索长度。判定树的广义表表示:_平均搜索长
14、度:_2. 已知一个有序表 ( 15, 26, 34, 39, 45, 56, 58, 63, 74, 76, 83, 94 ) 顺序存储于一维数组a12中,根据折半搜索过程填写成功搜索下表中所给元素 34, 56, 58, 63, 94 时的比较次数。元素值 比较次数3. 假定一个线性序列为 ( 38, 52, 25, 74, 68, 16, 30, 54, 90, 72 ),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出对该二叉搜索树查找 38, 74, 68, 30, 72 等元素时的比较次数。待查元素:比较次数:4. 假定一个线性序列为 ( 56, 27, 34, 95, 73
15、, 16, 50, 62, 65 ),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树的高度(假定树根结点的高度为 0) 、度为 2 的结点个数和叶子结点个数。高度:_度为 2 的结点个数:_叶子结点个数:_5. 假定一个线性序列为 ( 38, 42, 55, 15, 23, 44, 30, 74, 48, 26 ),根据此线性序列中元素的排列次序生成一棵二叉搜索树,求出该二叉搜索树中左子树为空的所有单支结点和右子树为空的所有单第 8 页 共 19 页支结点,请按从小到大的次序排列写出。左子树为空的所有结点:_右子树为空的所有结点:_6. 已知一棵二叉搜索树的广义表表示为:2
16、8 (12 ( , 16), 49 (34 (30), 72 (63) ) ),按主教材介绍的删除算法,求出从中依次删除 72, 12, 49, 28 结点后得到的二叉搜索树的广义表表示。广义表表示:_7. 假定一组数据对象为 ( 40, 28, 16, 56, 50, 32, 30, 63 ),按次序插入每个对象生成一棵 AVL 树(高度平衡的二叉搜索树) ,根据插入过程填写下表,在相应位置填写所需要的调整类型:“左单旋转” 、 “右单旋转” 、 “先左后右双旋转” 、 “先右后左双旋转” ,若不需要旋转则填写“无” 。数据: 调整:8. 假定一组数据对象为 ( 40, 28, 16, 56
17、, 50, 32, 30, 63, 44, 38 ),按次序插入每个对象生成一棵 AVL 树(高度平衡的二叉搜索树) ,请回答插入后需调整的结点个数和插入后不调整的结点个数。插入时伴随旋转调整的结点个数:_插入不调整的结点个数:_9. 假定一组记录为 ( 36, 75, 83, 54, 12, 67, 60, 40 ),按次序插入每个结点生成一棵 AVL 树(高度平衡的二叉搜索树) ,请回答在插入时需进行“左单旋转” 、 “右单旋转” 、 “先左后右双旋转” 、 “先右后左双旋转” , “不调整”的结点数各是多少?左单旋转结点个数:_右单旋转结点个数:_先左后右双旋转结点个数:_第 9 页 共
18、 19 页先右后左双旋转结点个数:_不调整结点个数:_10. 假定一组记录为 ( 38, 42, 55, 15, 23, 44, 30, 74, 48, 26 ),按次序插入每个结点生成一棵AVL 树(高度平衡的二叉搜索树) ,给出最后得到的 AVL 树中度为 2、度为 1 和度为 0 的结点个数。度为 2 的结点个数:_度为 1 的结点个数:_度为 0 的结点个数:_参考答案:1. 判定树的广义表表示:45 (26 (15, 34 ( , 39 ) ), 63 ( 56 ( , 58 ), 74 ( , 76 ) ) ) /4分平均查找长度:29/10 /2 分2. 判断结果元素值 比较次数
19、 /对 1 个给 1 分,全对给 6 分3. 判断结果待查元素:比较次数: /对 1 个给 1 分,全对给 6 分4. 高度:4 /2 分度为 2 的结点个数:2 /2 分叶子结点个数:3 /2 分第 10 页 共 19 页5. 左子树为空的结点:15, 23, 42, 44 /全对 4 分,否则不得分右子树为空的结点:30 /2 分6. 广义表表示:30 (16 , 63 (34) )7. 插入结果和调整类型为插入数据:调整类型: 8. 插入时伴随旋转调整的结点个数:4 /3 分,若误差 1 给 1 分,其余情况不得分插入不调整的结点个数:6 /3 分,若误差 1 给 1 分,其余情况不得分9. 左单旋转结点个数:1 /1 分右单旋转结点个数:0 /1 分先左后右双旋转结点个数:1 /1 分先右后左双旋转结点个数:0 /1 分不调整结点个数:6 /2 分10. 度为 2 的结点个数:4 /2 分度为 1 的结点个数:1 /2 分度为 0 的结点个数:5 /2 分