若由3,6,8,12,10作为叶子结点的值生成一棵哈夫曼树,则该树的高度为几?带权路径长度为多少?请画出这棵哈夫曼树。 某二叉树结点的中序遍历序列为A,B,C,D,E,F,G,后序遍历序列为B,D,C,
时间: 2023-06-13 11:09:04 浏览: 144
生成哈夫曼树的过程如下:
1. 将所有叶子节点按权值从小到大排序,得到序列 3,6,8,10,12。
2. 从序列中取出权值最小的两个节点,构建一棵新的二叉树,根节点的权值为这两个节点的权值之和。将这棵新树插入到序列中,保持序列有序。
- 第一次选出 3 和 6,构建一棵根节点权值为 9 的树。
3. 重复步骤 2,直到序列中只剩下一棵树为止。
- 第二次选出 8 和 9,构建一棵根节点权值为 17 的树。
- 第三次选出 10 和 12,构建一棵根节点权值为 22 的树。
- 最后一次选出 17 和 22,构建一棵根节点权值为 39 的树。此时序列中只剩下一棵树,即哈夫曼树。
画出的哈夫曼树如下:
```
39
/ \
17 22
/ \ / \
8 9 10 12
/
3
```
该树的高度为 3,带权路径长度为:
```
3*1 + 6*2 + 8*2 + 10*2 + 12*2 = 69
```
二叉树遍历序列的意义是:
- 中序遍历:左子树,根节点,右子树
- 后序遍历:左子树,右子树,根节点
因此,在给出的中序遍历序列中,B 必然是根节点,而在后序遍历序列中,B 在最后一个位置,说明根节点是最后遍历到的。因此,D 和 C 一定是根节点的左右子树,但是它们的相对顺序是不确定的,因此无法确定这棵二叉树的具体形态。
相关问题
若由3,6,8,12,10作为叶子结点的值生成一棵哈夫曼树,则该树的高度为几?带权路径长度为多少?请画出这棵哈夫曼树
根据哈夫曼树的构建规则,我们可以先找到权值最小的两个节点,将它们合并为一个节点,权值为两个节点权值之和。重复这个过程,直到所有节点都被合并为一个节点,构成一棵哈夫曼树。
我们可以先将这些叶子节点从小到大排序,得到 3,6,8,10,12。然后按照权值从小到大的顺序,依次将它们两两合并,得到以下的哈夫曼树:
```
49
/ \
19 30
/ \ / \
8 11 12 18
/ \
3 5
```
这棵哈夫曼树的高度为 3,带权路径长度为 193。
注意:这里的权值指的是叶子节点上的数值,每个叶子节点的权值都是它代表的数值。而带权路径长度指的是每个叶子节点的权值乘以它到根节点的路径长度之和,即:3×3 + 6×2 + 8×2 + 10×2 + 12×2 = 49。
由权值分别为3,6,8,2,5的叶子结点生成一棵哈夫曼树,它的带权路径长度为?
由权值分别为3,6,8,2,5的叶子结点生成的哈夫曼树如下:
```
24
/ \
10 14
/ \
4 6
/ \
3 1
```
其中,叶子节点的权值分别为 3、6、8、2、5,带权路径长度为每个叶子节点的权值乘以到根节点的路径长度之和,即:
```
3*3 + 6*2 + 8*2 + 2*3 + 5*3 = 3 + 12 + 16 + 6 + 15 = 52
```
因此,该哈夫曼树的带权路径长度为 52。
阅读全文