给定5个字符a~f,它们的权值集合W={2,3,4,7,8,9},试构造关于W的一棵哈夫曼树,求其带权路径长度WPL和各个字符的哈夫曼树编码。
时间: 2024-05-10 15:15:16 浏览: 126
//从叶子到根逆向求每个字符的哈夫曼编码-哈夫曼树的ppt
首先,我们需要根据权值集合W构造哈夫曼树。
步骤如下:
1. 将权值集合W中的每个元素看作是一棵只有一个节点的树,它们的权值分别为W中对应元素的权值。
2. 从中选出两个根节点权值最小的树作为左右子树,构造一棵新树,它的根节点的权值为左右子树根节点权值之和。
3. 将新树放入树集合中,从树集合中删除被选出的两个树。
4. 重复步骤2和3,直到树集合只剩下一棵树,这棵树即为哈夫曼树。
根据上述步骤,我们可以得到下面的哈夫曼树:
```
33
/ \
/ \
15 18
/ \ / \
7 8 9 9
/ \
2 5
```
根据哈夫曼树,我们可以得到各个字符的哈夫曼编码:
```
a: 001
b: 000
c: 010
d: 11
e: 10
f: 011
```
计算带权路径长度WPL:
WPL = 2*3 + 3*3 + 4*3 + 7*2 + 8*2 + 9*2 = 70
因此,哈夫曼树的带权路径长度为70。
阅读全文