哈夫曼编码以及带权路径长度的计算

笔试题:哈夫曼编码{4,9,2,7,5,12}的带权路径长度

解决思路:

  1. 首先构造哈夫曼树
  2. 在使用WPL=(W1*L1+W2*L2+W3*L3+…+Wn*Ln)计算带权路径长度

实现:

构造哈夫曼树:

每次取出最小的两个数构造第一层,在给出的哈夫曼编码中是2和4

2
4
6

接下来是6和5

2
4
5
6
11

接下来是 7 和 9

7
9
16

下一步是 11 和 12

2
4
5
12
6
11
23

最后是23 和16

2
4
5
7
9
12
6
11
23
39
16

以上就是构造哈夫曼树的具体实现

计算带权路径长度

使用每一个方格的数乘以所在树的深度

WPL=4*(2+4)+3*5+2*(12+7+9)

以上就是计算的具体实现

你可能感兴趣的:(树)