我知道有很多涉及霍夫曼代码的问题,包括我自己的另一个问题,但我想知道实际编码文本文件的最佳方法是什么。减压看似微不足道;遍历树,在 0 处向左,在 1 处向右,打印字符。
但是,如何进行压缩呢?以某种方式将字符的位表示存储在树的节点中?每次遇到该角色时都在树中搜索该角色并追踪步骤?采用哪种编码方式重要吗?
到目前为止,我有一棵霍夫曼树,其中叶节点没有与之关联的二进制值。我的麻烦是将二进制值分配给树中的每个字符。
Thanks
好吧,如果您要基于字符对文件进行编码,我看不到问题,只需保留符号的哈希表,然后构建一棵树并使用您想要的任何约定将其写入文件的开头, hten 将新的字母表应用于文本。看看采取的方法DEFLATE http://en.wikipedia.org/wiki/DEFLATE,用于压缩 PNG 图像。
EDIT
目前尚不清楚问题是什么。
在树中搜索每个字符
遇到它的时间并追踪
脚步?
树中的每个节点代表一个唯一的符号。你不必搜索任何东西,只有当你已经计算出每个符号的出现次数时,你才能构建霍夫曼树。
那么您已经开发了一种构建树的算法,问题是如何将二进制值分配给节点?或者在哪里存储这些值?树本身自然地代表二进制值,您实际上可以在树构建过程中跟踪它们,只需在插入操作中跟踪项目“路径”并将该值存储在节点内,或者创建一个哈希表(如果不这样做)想要修改节点实体。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)