使用Huffman Code压缩文件的步骤

时间:2011-04-16 19:41:16

标签: tree performance binary-tree huffman-code

我知道有很多涉及霍夫曼代码的问题,包括我自己的另一个问题,但我想知道实际编码文本文件的最佳方法是什么。减压似乎微不足道;遍历树,向左走0,向右走1,打印角色。

但是,如何进行压缩?以某种方式将字符的位表示存储在树的节点中?每次遇到字符时搜索树,并跟踪步骤?这是什么方式编码是否重要?

到目前为止,我有一个霍夫曼树,其中叶节点没有与它们相关联的二进制值。我的麻烦是将二进制值分配给树中的每个字符。

由于

1 个答案:

答案 0 :(得分:0)

好吧,如果你要基于字符编码文件,我看不出问题,只需保留符号的哈希表,然后构建一个树&使用您想要的任何约定将其写入文件的开头,然后将新字母应用于文本。看看DEFLATE中采用的方法,该方法用于压缩PNG图像。

修改

问题是什么并不是很清楚。

  

在树中搜索每个字符   它遇到的时间和追踪   步骤是什么?

树中的每个节点都代表一个唯一的符号。您不必搜索任何内容,只有在计算了每个符号的出现时才能构造霍夫曼树。

所以你已经开发了一个构造树的算法,问题是关于如何将二进制值分配给节点?或者在哪里存储这些值?树本身自然地表示二进制值,您可以在树构造期间实际跟踪它们,只需在插入操作中保留项目“路径”的轨迹并将该值存储在节点内,或者如果不存在则创建哈希表想要修改节点实体。