【发布时间】:2013-12-13 13:55:17
【问题描述】:
从如下所示的文本文件开始:
a: 0
b: 100
c: 101
d: 11
0 0 100 100 11 101
所以这会解码:aabbdc
我可以使用什么解码算法来构建 Huffman 树,然后使用它来解码消息?示例代码也将受到高度赞赏!
这就是我的想法:
- 创建将每个符号映射到其位的查找表
- 创建根节点
- 要构建树,从编码中读取每个位
- 如果为 0,则创建一个左孩子。如果为 1,则创建一个右孩子
- 如果达到空间,以某种方式指示叶子(空左和右指针)
- 使用我们在该空间之前读取的位,看看这是什么查找表
- 在那片叶子上插入字符
然后,我可以再次读取每个位并让它在树中移动。当它碰到一个空格时,我会在它到达的叶子处返回字符吗?
【问题讨论】:
-
写代码看看会发生什么
-
用空格分隔代码消除了解码中的所有复杂性,并且确实消除了代码无前缀的需要。此外,如果您对 Huffman 编码很认真,请查看基于表的解码。
标签: c++ algorithm tree huffman-code