有数据WG={7,19,2,6,32,3,21,10}, (1)画出所构建的Huffman 树; (2)所建Huffman 树的树高是多少? (3)求所建Huffman 树的带权路径长度WPL。
时间: 2023-09-11 10:05:36 浏览: 106
### 回答1:
好的,我明白了。关于你的问题,我可以回答如下:
(1)根据WG数据构建的Huffman树如下图所示:
```
+-----+
| 135 |
+------+---+-------+
| | |
60V 75H +---+
| | |
30 45 50
| | |
+---+ +---+
| | | |
12 18 21 29
```
(2)所建Huffman树的树高为3。
(3)所建Huffman树的带权路径长度WPL为:
```
WPL = 7*4 + 19*3 + 2*5 + 6*4 + 32*2 + 3*5 + 21*3 + 10*4
= 28 + 57 + 10 + 24 + 64 + 15 + 63 + 40
= 301
```
希望这些回答能够帮助你,如果你有其他问题,欢迎继续提问。
### 回答2:
(1) 根据数据 WG={7,19,2,6,32,3,21,10},可以首先构建Huffman树:
第一步: 将所有节点作为叶子节点,并按照权值大小排列,得到{2,3,6,7,10,19,21,32}。
第二步: 取出权值最小的两个节点2和3,生成一个新节点,权值为2+3=5。
第三步: 将新生成的节点和原来的节点一起按照权值大小排列,得到{5,6,7,10,19,21,32}。
第四步: 重复上述步骤,每次取出权值最小的两个节点生成一个新节点,直至只剩下一个节点为根节点。
最终得到Huffman树如下所示:
100
/ \
/ \
52 48
/ \ / \
21 27 10 18
/ \ / \ / \ / \
7 13 6 7 3 7 10
(2) Huffman树的树高为4。
(3) 求Huffman树的带权路径长度WPL,即将每个节点的权值乘以其到根节点的距离,再将所有节点的结果相加。
WPL = (7*3) + (19*3) + (2*4) + (6*4) + (32*2) + (3*3) + (21*2) + (10*3) = 170。
因此,所建Huffman树的带权路径长度为170。
### 回答3:
(1) 构建Huffman树的步骤如下:
首先,将数据集WG中的每个元素作为一个叶子节点,并且将它们按照权值大小升序排列。然后,选取权值最小的两个节点,将它们合并为一棵子树,权值为它们的权值之和。将这棵子树放回原来的位置,并且保持权值升序排列。重复这个过程,直到只剩下一棵树为止,这棵树即为Huffman树。
构建的Huffman树如下:
┌────┐
│ WPL │
┌───┴───┘───────┐
97 58
┌───┴───┐ ┌───┴───┐
32 26 32 26
┌─┴─┐ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐
14 18 14 12 16 16 16 10
┌─┴─┐┌┘┌─┴─┐└┐┌─┴─┐└┐┌─┴─┐└┐┌─┴─┐
3 11 7 18 12 5 6 6 7 3 4 3 3 7
(2) Huffman树的树高是3,即根节点到叶子节点的最长路径长度。
(3) 求所建Huffman树的带权路径长度WPL的计算方法如下:
将根节点到每个叶子节点的路径长度与叶子节点的权值相乘,并将所有叶子节点得到的乘积相加。
计算得到带权路径长度WPL的过程如下:
WPL = 97*2 + 58*3 + 32*2 + 26*2 + 14*4 + 12*4 + 16*2 + 10*4 + 3*6 + 11*5 + 7*7 + 18*5 + 5*6 + 6*6 + 6*7 + 7*6 = 444
所以,所建Huffman树的带权路径长度WPL为444。
阅读全文