问答题 设记录的关键字(key)集合:K={24,15,39,26,18,31,05,22},请回答:
依次取K中各值,构造一棵二叉排序树(不要求平衡),并写出该树的前序、中序和后序遍历序列。
设Hash表表长m=16,Hash函数H(key)=(key)%13,处理冲突方法为“二次探测法”,请依次取K中各值,构造出满足所给条件的Hash表;并求出等概率条件下查找成功时的平均查找长度。
将给定的K调整成一个堆顶元素取最大值的堆(即大根堆)。
【正确答案】
【答案解析】(1)将关键字{24,15,39,26,18,31,05,22}依次插入构成的二叉排序树如下:

先序遍历序列:24,15,05,18,22,39,26,31
中序遍历序列:05,15,18,22,24,26,31,39
后序遍历序列:05,22,18,15,31,26,39,24
(2)各关键字通过Hash函数得到的散列地址如下表。
关键字 24 15 39 26 18 31 05 22
散列地址 11 2 0 0 5 5 5 9
Key=24、15、39均没有冲突,H0(26)=0,冲突,H 1 (26)=0+1=1,没有冲突;Key=18没有冲突,H0(31)=5,冲突,H1(31)=5+1=6,没有冲突;H0(05)=5,冲突,H1(05)=5+1=6,冲突,H2(05)=5-1=4,没有冲突,Key=22没有冲突故各个关键字的存储地址如下表所示。
地址 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
关键字 39 26 15 05 18 31 22 24
没有发生冲突的关键字,查找的比较次数为1,发生冲突的关键字,查找的比较次数为冲突次数+1,因此,等概率下的平均查找长度为:
ASL=(1+1+1+2+1+2十3+1)/2=1.5欠
(3)首先对以26为根的子树进行调整,调整后的结果如图b所示;对以39为根的子树进行调整,调整后的结果如图c所示;再对以15为根的子树进行调整,调整后的结果如图d所示;最后对根结点进行调整,调整后的结果如图e所示。