第9章 集合
一、基础知识题
9.1 若对长度均为n的有序的顺序表和无序的顺序表分别进行顺序查找,试在下列三种情况下分别讨论二者在等概率情况下平均查找长度是否相同?
(1)查找不成功,即表中没有和关键字K相等的记录; (2)查找成功,且表中只有一个和关键字K相等的记录;
(3)查找成功,且表中有多个和关键字K相等的记录,要求计算有多少个和关键字K相等的记录。 【解答】
(1)平均查找长度不相同。前者在n+1个位置均可能失败,后者失败时的查找长度都是n+1。 (2)平均查找长度相同。在n个位置上均可能成功。 (3)平均查找长度不相同。前者在某个位置上(1<=i<=n)查找成功时,和关键字K相等的记录是连续的,而后者要查找完顺序表的全部记录。
9.2 在查找和排序算法中,监视哨的作用是什么?
【解答】监视哨的作用是免去查找过程中每次都要检测整个表是否查找完毕,提高了查找效率。
9.3 用分块查找法,有2000项的表分成多少块最理想?每块的理想长度是多少?若每块长度为25 ,平均查找长度是多少?
【解答】分成45块,每块的理想长度为45(最后一块长20)。若每块长25,则平均查找长度为ASL=(80+1)/2+(25+1)/2=53.5(顺序查找确定块),或ASL=19(折半查找确定块)。
9.4 用不同的输入顺序输入n个关键字,可能构造出的二叉排序树具有多少种不同形态? 【解答】 1n n 12n
9.5 证明若二叉排序树中的一个结点存在两个孩子,则它的中序后继结点没有左孩子,中序前驱结点没有右孩子。
【证明】根据中序遍历的定义,该结点的中序后继是其右子树上按中序遍历的第一个结点,即右子树上值最小的结点:叶子结点或仅有右子树的结点,没有左孩子;而其中序前驱是其左子树上按中序遍历的最后个结点,即左子树上值最大的结点:叶子结点或仅有左子树的结点,没有右孩子。命题得证。
9.6 对于一个高度为h的AVL树,其最少结点数是多少?反之,对于一个有n个结点的AVL树, 其最大高度是多少? 最小高度是多少?
【解答】设以Nh表示深度为h的AVL树中含有的最少结点数。显然,N0=0,N1 =1,N2 =2,且Nh = Nh-1 + Nh-2 +1(h≥2)。这个关系与斐波那契序列类似,用归纳法可以证明:当h≥0时,Nh = Fh+2 -1,而Fh约等于
C
Ф/。其中Ф=(1+5)/2,则Nh约等于Ф
hh+2
/(-1) (即深度为h的AVL树具有的最少结点数)。
(
有n个结点的平衡二叉树的最大高度是logФ(n+1))-2,最小高度是 log2n 。
9.7 试推导含有12个结点的平衡二叉树的最大深度,并画出一棵这样的树。 【解答】根据9.6的结论可知,深度为n的AVL树中的最少结点数为Nn Fn 2 1
所以12=Fn 2 1,有Fn 2=13,求得n+2=7(Fibonacci数列第一项的值假设为1,对应于二叉树表
示有一个结点的二叉树的深度为1),所以n=5。

818

被折叠的 条评论
为什么被折叠?



