当前位置:文档之家› 李春葆《数据结构教程》(第4版)课后习题-查找(圣才出品)

李春葆《数据结构教程》(第4版)课后习题-查找(圣才出品)

第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)若处理冲突的方法采用链地址法,设计一个算法输出哈希表并计算成功情况下和。

相关主题