李春葆《数据结构教程》(第4版)课后习题-查找(圣才出品)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章查找
1.对于有序表A[0..10],采用二分查找法时,求成功和不成功时的平均查找长度。对于有序表{12,18,24,35,47,50,62,83,90,115,134},当用二分查找法查找90时,需进行多少次查找可确定成功?查找47时,需进行多少次查找可确定成功?查找100时,需进行多少次查找才能确定不成功?
答:对于A[0..10]有序表构造的判定树如图9-1(a)所示。因此有:
对于本题给定的有序表构造的判定树如图9-1(b)所示,由此可知本题答案分别为2、4和3。
图9-1 一棵判定树
2.将整数序列{4,5,7,2,1,3,6}中的数依次插入到一棵空的二叉排序树中,试构造相应的二叉排序树,要求用图形给出构造过程,不需编写程序。
答:构造一棵二叉排序树过程如图9-2所示。
图9-2 构造二叉排序树过程
3.将整数序列{4,5,7,2,1,3,6}中的数依次插入到一棵空的平衡二叉树中,试构造相应的平衡二叉树,要求用图形的方式给出构造过程,不需编写程序。
答:构造一棵平衡二叉树过程如图9-3所示。
图9-3 构造平衡二叉树过程
4.编写一个算法,输出在一棵二叉排序树中查找某个关键字k经过的路径。
答:使用path数组存储经过的节点,当找到所要找的节点时,输出path数组中的元素值,从而输出以根节点到当前节点的路径。对应的算法如下:
查找关键字3:3425
从中看到,两者输出的路径相反,SearchBSTl()更灵活些,它可以对路径上经过的节点进行相应的处理。
5.编写一个算法,判断给定的二叉树是否是二叉排序树。
答:对二叉排序树来说,其中序遍历序列为一个递增有序序列。因此,对给定的二叉树进行中序遍历,如果始终能保持前一个值比后一个值小,则说明该二叉树是一棵二叉排序树。对应的算法如下:
6.已知一个关键字序列为if、while、for、case、do、break、else、struct、union、int、double、float、char、long、bool共15个字符串,哈希函数H(key)为关键字的第一个字母在字母表中的序号,哈希表的表长为26。
(1)若处理冲突的方法采用线性探查法,设计一个算法输出每个关键字对应的H(key)、输出哈希表并求成功情况下的平均查找长度。
(2)若处理冲突的方法采用链地址法,设计一个算法输出哈希表并计算成功情况下和