【发布时间】:2013-02-26 04:22:17
【问题描述】:
脱水霍夫曼树的最佳方法是什么,脱水我的意思是给定一棵霍夫曼树,以及每片叶子中的字符,你如何有效地存储这棵树的结构,然后再重建它。
取下面的树:
---------------garbage------
-------------/-------\------
------------A-------garbage-
--------------------/-----\-
-------------------B-------C-
一个想法可能是将符号存储在每个级别,然后使用此信息来重建树。 在这种情况下: A1B2C2。 那么我怎样才能先获得关卡,并将每个关卡与角色相关联。
【问题讨论】:
-
你试过什么?你在哪里卡住?构建霍夫曼树在计算上非常便宜,因此以特殊格式存储几乎没有意义。只需存储您首先用于构建树的排序列表。
-
我使用它来进行压缩,因此需要将足够的信息存储在压缩文件中,以便以后使用这些信息来重建树并解压缩。如果我使用排序列表,它将占用 256*4 字节,但我正在寻找一种方法来节省压缩文件中的更多空间。一个想法是遍历树并将每个符号与其在树上的级别相关联,我正在研究这个想法,但我在实现上陷入困境。
-
或者如果我重新构建问题,我如何遍历树,存储级别,并将该级别的叶子符号与该级别相关联。
标签: c++ tree huffman-code