1. 假设一棵二叉排序树的关键字为单个字母,其后序遍历序列为ACDBFIJHGE,回答以下问题: (1)画出该二叉排序树; (2)求在等概率下的查找成功的平均查找长度。 (3)求在等概率下的查找不成功的平均查找长度。 2. 设有一组关键字(19,1,23,14,55,20,84,27,68,11,10,77),其哈希函数为h(key)=key % 13。采用开放地址法的线性探测法解决冲突,试在0~18的哈希表中对该关键字序列构造哈希表,并求在成功和不成功情况下的平均查找长度。 (参考答案: 23/12=1.92 58/13=4.46)
时间: 2023-11-16 10:04:47 浏览: 233
好的,我已经记录下来了。现在回答你的问题:
1. (1)画出该二叉排序树:
```
G
/ \
E J
/ \ \
C H I
/ \ /
A D F
```
(2)求在等概率下的查找成功的平均查找长度:根据二叉排序树的性质,可以得到每个结点的左子树中的所有结点都小于该结点,右子树中的所有结点都大于该结点。因此,在等概率下查找成功的平均查找长度为树的深度,即:
$$(1+2+2+3+3+3+4+4+4+4+5+5+6)/13=23/12=1.92$$
(3)求在等概率下的查找不成功的平均查找长度:假设需要查找的元素为x,根据二叉排序树的性质,可以得到在查找过程中每个结点都对应一条路径,因此,在等概率下查找不成功的平均查找长度为树的深度加1,即:
$$(1+2+2+3+3+3+4+4+4+4+5+5+6+1)/14=58/13=4.46$$
2. 构造哈希表并求平均查找长度:
根据给定的哈希函数h(key)=key % 13,可以得到关键字的哈希地址为:
```
19%13=6, 1%13=1, 23%13=10, 14%13=1, 55%13=3, 20%13=7, 84%13=9, 27%13=1, 68%13=10, 11%13=11, 10%13=10, 77%13=4
```
采用开放地址法的线性探测法解决冲突,可以得到以下哈希表:
```
0:
1: 1 14 27
2:
3: 55
4: 77
5:
6: 19
7: 20
8:
9: 84
10: 23 68 10
11: 11
12:
```
在成功情况下,每个元素的查找长度为1,因此,在成功情况下的平均查找长度为:
$$(1+1+1+1+1+1+1+1+1+1+1+1)/12=1$$
在不成功情况下,需要遍历整个哈希表才能确定元素不在表中,因此,在不成功情况下的平均查找长度为:
$$(1+2+3+4+5+6+7+8+9+10+11+12)/13=58/13=4.46$$
阅读全文