我正在尝试从某些频率创建一个霍夫曼代码。我知道怎么做但我只有一个混乱,在哪一方(左或右?)我们将把哪个元素。
我的意思是我对霍夫曼树的想法是 - (1)首先,我们按降序排列所有频率。 (2)取最小的两个并合并它们。 **但是我不明白两个频率中的哪一个会进入正确的位置,哪个进入左侧**我知道在右侧我们有'0'而右侧我们有'1'。但是哪个频率要保持在右边或左边,我不知道。我们在什么基础上这样做?
答案 0 :(得分:0)
由于我不完全理解你的问题,我会给你一个关于霍夫曼编码的简单例子:
A: 0.5
B: 0.1
C: 0.2
D: 0.15
E: 0.05
现在按频率降序排列:
A: 0.5
C: 0.2
D: 0.15
B: 0.1
E: 0.05
现在我们将底部两个结合起来:
A: 0.5
C: 0.2
D: 0.15
B+E: 0.15
我们继续这样做,直到我们有一个完全二叉树。在这个例子中:
A = 0, C = 10, D = 110, B = 1110, E = 11110
只要您的解压缩程序知道如何读取它,我们选择以0或1继续树是无关紧要的。
答案 1 :(得分:0)
您可以让左侧或右侧的子节点与整体解决方案无关。我们只会看到这些值的长度0& 1.