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-12-06 20:02:17 浏览: 85
很高兴为您解答问题!
1. (1) 二叉排序树如下所示:
```
G
/ \
E J
/ \ \
C F I
/ \
A H
/
D
```
(2) 对于等概率下的查找成功,平均查找长度为 L = (1+2+3+4+5+6+7+8)/8 = 4.5。
(3) 对于等概率下的查找不成功,平均查找长度为 L = (1+2+3+4+5+6+7+9)/9 ≈ 4.11。
2. 采用线性探测法的哈希表如下所示:
```
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
1 14 84 27 68 11 55 20 23 19 10 - - - - - - - 77
```
对于查找成功的情况,平均查找长度为 L = (1+1+1+1+1+1+1+1+1+1+1+1)/12 = 1。
对于查找不成功的情况,平均查找长度为 L = (1+2+3+4+5+6+7+8+9+10+11+12)/13 ≈ 4.46。
相关问题
假设一棵二叉排序树的关键字为单个字母,其后序遍历序列为ACDBFIJHGE,回答以下问题: (1)画出该二叉排序树; (2)求在等概率下的查找成功的平均查找长度。 (3)求在等概率下的查找不成功的平均查找长度。
(1) 画出该二叉排序树:
```
G
/ \
E J
/ / \
C I H
/ \
A D
/
B
```
(2) 在等概率下的查找成功的平均查找长度为:(1+2+3+4+5+6+7)/7=4
(3) 在等概率下的查找不成功的平均查找长度为:(1+2+2+3+3+4+4)/8=2.5
假设一棵二叉排序树的关键字为单个字母,其后序遍历序列为ACDBFIJHGE,详细讲解以下问题:(1)画出该二叉排序树。(6分)(2)求在等概率下的查找成功的平均查找长度。(2分)(3)求在等概率下的查找不成功的平均查找长度
### 回答1:
(1) 画出该二叉排序树如下图所示:
```
G
/ \
E J
/ / \
C H I
/ \
A D
\
B
```
(2)在等概率下的查找成功的平均查找长度为 3.7。
查找成功的概率为每个节点的概率,即 1/9。对于任意一个节点,其深度为从根节点到该节点所经过的边数。因此,查找成功的平均查找长度为:
(1/9) * (1 + 2 + 2 + 3 + 3 + 3 + 4 + 4 + 5) = 3.7
(3)在等概率下的查找不成功的平均查找长度为 4.44。
由于二叉排序树的特性,当查找不成功时,需要到达最底层的空节点才能确定查找失败。因此,查找不成功的平均查找长度为树的深度加一。树的深度为 4,因此查找不成功的平均查找长度为 4 + 1 = 4.44。
### 回答2:
(1)根据后序遍历序列ACDBFIJHGE,可以得到该二叉排序树的结构如下:
G
/ \
E J
/ \ /
D H I
/ /
C F
/
A
(2)在等概率下的查找成功的平均查找长度可以通过二叉排序树的深度来计算。深度是指从根节点到达某个叶子节点的路径长度。根据二叉排序树的结构,每个节点的深度为从根节点到达该节点的路径长度。
节点A的深度为1,节点C的深度为2,节点D的深度为3,节点E的深度为2,节点F的深度为3,节点G的深度为1,节点H的深度为2,节点I的深度为3,节点J的深度为2。
平均查找长度 = (节点A的深度 + 节点C的深度 + 节点D的深度 + 节点E的深度 + 节点F的深度 + 节点G的深度 + 节点H的深度 + 节点I的深度 + 节点J的深度) / 总节点数
总节点数为9个,所以平均查找长度 = (1 + 2 + 3 + 2 + 3 + 1 + 2 + 3 + 2) / 9 = 20 / 9 ≈ 2.22
(3)在等概率下的查找不成功的平均查找长度仍然可以通过二叉排序树的深度来计算。根据二叉排序树的结构,对于一个叶子节点来说,它的深度等于从根节点到达该节点的路径长度。
所有叶子节点的路径长度之和等于深度乘以每个深度的叶子节点数,再除以总叶子节点数。
叶子节点数为5个,其中A、C、D、F、I是叶子节点,它们的深度分别为1、2、3、3、3。
总叶子节点数为9个,所以平均查找长度 = (1*1 + 2*2 + 3*3 + 3*1 + 3*2) / 9 = (1 + 4 + 9 + 3 + 6) / 9 = 23 / 9 ≈ 2.56。
### 回答3:
(1)根据后序遍历序列以及二叉排序树的特点,可以得到根节点为E,根节点E的右子树为HGE,左子树为ACDBFIJ。继续根据子树的后序遍历序列可以得到二叉排序树的结构如下:
E
/ \
C H
/\ / \
A D G J
\
F
该二叉排序树绘制出来即可。
(2)在等概率下的查找成功的平均查找长度计算公式为:ASL = log2(n+1) - (1/n) * (H(x1) + H(x2) + ... + H(xn)),其中n为节点的个数,H(x1)、H(x2)分别为查找到节点x1、x2时所经过的节点数量。
对于该二叉排序树,节点的个数n为9个,那么查找成功的平均查找长度ASL = log2(9+1) - (1/9) * (0 + 1 + 1 + 1 + 2 + 2 + 2 + 3 + 3) = log2(10) - (1/9) * 15 ≈ 2.356。
(3)在等概率下的查找不成功的平均查找长度计算公式为:ASL = log2(n+1)。
对于该二叉排序树,节点的个数n为9个,那么查找不成功的平均查找长度ASL = log2(9+1) = log2(10) ≈ 3.322。
(注意:上述计算公式中的log2(n)表示以2为底n的对数,H(x)表示节点x所在的深度)
阅读全文