给定 6 个字符 a~f它们的权值集合 W=234789试构造关于w的一裸哈夫曼树求其带权路径长度 WPL 和各个字符的哈夫曼编码
首先将权值按从小到大的顺序排序,得到 W=(2,3,4,7,8,9)。然后我们将相邻的两个权值合并,得到新的权值序列 W'=(5,7,11,17,17)。在这个过程中,我们需要把两个权值合并成一个节点,该节点的权值为两个权值之和。
接着,我们再将 W' 中相邻的两个权值合并,得到新的权值序列 W''=(12,18,34)。最后,将 W'' 中相邻的两个权值合并,得到根节点,其权值为 WPL=50。因此,该裸哈夫曼树如下所示:
50
/ \
17 33
/ \ |
7 10 23
/ \ |
2 5 13
| /
3 6
\ |
4 8
|
9
接下来,我们可以根据裸哈夫曼树求出各个字符的哈夫曼编码。从根节点开始,对于每个左分支走一次,编码为0;对于每个右分支走一次,编码为1。例如,字符 a 的编码为 000,字符 b 的编码为 001,以此类推。因此,各个字符的哈夫曼编码如下:
a: 000
b: 001
c: 010
d: 011
e: 100
f: 101
``
原文地址: https://www.cveoy.top/t/topic/eqUh 著作权归作者所有。请勿转载和采集!