假设一棵二叉排序树的关键字为单个字母,其后序遍历序列为ACDBFIJHGE,回答以下问题: (1)画出该二叉排序树; (2)求在等概率下的查找成功的平均查找长度。 (3)求在等概率下的查找不成功的平均查找长度。
时间: 2023-09-05 14:11:15 浏览: 91
(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所在的深度)
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)
好的,我已经记录下来了。现在回答你的问题:
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$$
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)