9.2综合练习  

1.     假定对有序表:(3,4,5,7,15,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题:(1)画出描述折半查找过程的判定树;(2)若查找元素54,需依次与哪些元素比较?

(3)若查找元素95,需依次与哪些元素比较?

(4)假定每个元素的查找概率相等,求查找成功和不成功时的平均查找长度。

解答:.1                                 

       

                                   30

 


5                                                                   63

 


                        3       15           62        87

 


                          4    7    24          54    72   95

 

2)查找元素54,需依次与元素306342比较,之后查到元素54

3)查找元素95,需依次与元素306387比较,之后查到元素95

4ASL(成功)=1/13(1*1+2*2+4*3+6*4)=41/13

ASL(失败)=1/14(2*3+12*4)=54/14

 

2.       用不同的输入顺序输入n个关键字,可能构造出的二叉排序树具有多少种不同形态?

解答:1/(n+1)*(2n)!/(n!)* (n!)

 

3.       画出对长度为16的有序表进行二分查找的判定树,并求其等概率时查找成功和不成功的平均查找长度。

解答:

                             8

 

                         4               12

 

2        6        10       14

               

                1    3    5     7    9    11  13    15

 

                                                        16

  ASL(成功)=1/16(1*1+2*2+4*3+8*4+1*5)=54/16

  ASL(失败)=1/17(15*4+2*5)=70/17

 

4.       设有一组关键字(72351241538457)需插入到表长为12的散列表中。设计一个合适的散列函数。用设计出的散列函数将上述关键字插入散列表。请画出建好的散列表结构(假定用线性探测法解决冲突)。指出该散列表的装填因子是多少。

解答:

哈希函数  H(key)=key%11

 

哈希地址

0

1

2

3

4

5

6

7

8

9

10

11

关键字

 

 

35

124

57

 

72

84

 

 

153

 

比较次数

 

 

1

1

3

 

 

1

 

 

1

 

   装填因子    α=6/12=0.5

 

5.       设有一个输入数据的序列是(46, 25, 78, 62, 12, 37, 70, 29),试画出从空树起,逐个输入各个数据而生成的二叉排序树。

解答:

                                    46

 

25                            78

 

12    37    62

 

29                                       70

 

6.       从一棵二叉排序树中删除两个元素,该二叉排序树的形态是否与元素的删除次序有关?

  解答:有关,除非删除的都是叶子。

 

7.       将关键字(DEC, FEB, NOV, OCT, JUL, SEP, AUG, APR, MAR, MAY, JUN, JAN)按字母顺序依次插入到一棵初始为空的AVL树中,画出每插入一个关键字后的AVL树,并标明平衡旋转的类型。在所建立的AVL树中删除关键字MAY,为保持AVL树的特性,应如何进行删除和调整? 若接着删除关键字FEB,又应如何删除与调整?

    解答:

    DEC                  FEB                         NOV

 


        FEB  -(RR)à    DEC    NOV     --(RR)à   FEB     OCT   --LLà

 


         NOV                JUL   OCT         DEC  JUL     SEP

 


SEP      AUG

 


       APR                                                                    

                NOV                                   NOV  

 

FEB     OCT    ---(RR)à             FEB     OCT      --(LR)à

 


AUG   JUL      SEP                 AUG   JUL      SEP

 


APR   DEC   MAR                    APR   DEC   MAR

 


               MAY                              JUL   MAY

 


                                                    JUN

 

                            

MAR

 


FEB            NOV

 


AUG     JUL      MAY    OCT

 


APR   DEC  JAN  JUN           SEP

 

8.       对于一个高度为hAVL树,其最少结点数是多少?反之,对于一个有n个结点的AVL, 其最大高度是多少? 最小高度是多少?

解答:hAVL树,最少结点为Nh =Fh+2-1, Fh≈Фh/。其中Ф=(1+)/2,

  Nh≈Фh+2/{-1}。有n个结点的平衡二叉树的最大高度是logФ( (n+1))-2

最小高度ëlog2nû

 

9.       k1,k2,k3是三个不同的关键字且k1>k2>k3。按不同的输入顺序建立相应的二叉排序树。

解答:1/(n+1)*(2n)!/(n!)(n!)=5

                         

 

10.   对于一棵有1999999个关键字的199B-树,试估计其最大层数(不包括失败结点)及最小层数(不包括失败结点)

解答: 最大层数

           L=logém/2ù (N+1/2)+1,即L<=4

   最小层数:L=3,因第一层198,第二层199*198,第三层199*199*198个关键字。1,999,999<198+199*198+199*199*198(大于满两层的B-树而小于满三层的B-树――不包括失败的n个子结点层)

 

11.   给定一组记录,其关键字为字符。记录的插入顺序为(C, S, D, T, A, M, P, I, B, W, N, G, U, R, K, E, H, O, L, J),给出插入这些记录后的4B-树。

解答: