永发信息网

为什么 00,100,101,110,111不是哈夫曼编码?

答案:2  悬赏:10  手机版
解决时间 2021-01-04 06:47
  • 提问者网友:美人性情
  • 2021-01-03 19:16
如题
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-01-03 19:34
首先构造哈夫曼树,选择两个最小权值结点构造树,树的根权值是两个左右子树的权值之和,该权值放回到原来的序列中。然后再次构造直到只有一颗树为止。
0.07 0.13 0.14 0.16 0.18 0.32
0.18 0.20 0.30 0.32
/ \ / \
0.07 0.13 0.14 0.16
看题目到上面你应该都理解了,接下来是0.18 0.20两个相加,是选择两个最小权值的结点,而不是0.18 和 0.32,新的序列变为
0.30 0.32 0.38
/ \ / \
0.14 0.16 0.18 0.20
/ \
0.07 0.13
再选择0.30 0.32得到0.62,然后0.38和0.62组成一棵树,最终的二叉树是
1
/ \
0.38 0.62
/ \ / \
0.18 0.20 0.3 0.32
/ \ / \
0.07 0.13 0.14 0.16
然后左子树,即"/"号代替为二进制编码的0,“\”为1,得到哈夫曼编码为
a2(0.18) : 00
a4(0.07): 010
a1(0.13): 011
a6(0.14): 100
a3(0.16): 101
a5(0.32): 11
全部回答
  • 1楼网友:行路难
  • 2021-01-03 20:32
如图所示,主要是00出现了问题,a节点没有右儿子,可以看出a节点完全是多余的。b节点的编码直接是0就好了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯