若有字符a,b,c,d,e,f,g,h的频度权值分别为(30,5,9,11,15,2,7,16),试为这组字符设计哈弗曼编码。

哈弗曼编码:a:01 b:00001 c:100 d:101 e:001 f:00000 g:0001 h:11
这上面是答案,为什么b是00001,b不应该是00011吗是我错了还是答案错了,还有g可不可以写成0000

仔细看了一下,这里的图根编码不一致,最后2 5加起来的值是7 跟 7位置换一下
即部分左子树改为如下
95
/
59
/ \
29 30
/ \
14 15
/ \
7 7
/ \
2 5
这样,b就是00001, g是0001 f是000000

你上面的哈夫曼树(没有错,因为同样大小的权值点,没有规定谁左谁右),编码就是你说的b是00011 而不是00001,g就是0000
温馨提示:答案为网友推荐,仅供参考