java中如何导出霍夫曼解码/编码项目的树数据结构?

How to export tree data structure for Huffman decoding/ encoding project in java?

我有一个项目作为任务,但我还没有实施它,但我已经想出了它的想法,但最后一步是我无法弄清楚的,甚至不知道如何实施。这就是我想要从我的项目中得到的:

我想使用 java 创建基于文本的压缩模型。我将创建一个霍夫曼编码器和解码器,并将这些程序存储在两台计算机中:PC1 和 PC2。

现在在 PC1 中,我将提供一个 "data.txt" 文件作为我的 Huffman 编码器程序的输入,它将创建另一个名为 "binary.txt" 的文件,其中包含 0 和 1。现在我不再传输 "data.txt" 文件,而是将 "binary.txt" 文件通过电子邮件发送到 PC2 并在那里使用解码器 java 程序,我将尝试重新创建 "data.txt"。这样我就可以使用霍夫曼机制压缩我的文件。

所以问题是我是 java 的新手(到目前为止我还不害怕),我不知道如何从 PC1 导出树数据结构以及 "binary.txt" 文件,因为对于霍夫曼解码(稍后在 PC2 中),我需要访问在 PC1 中创建的霍夫曼树,那么我该如何解决或创建这个项目?

还有其他更好的方法来实现这个项目吗? Hashmap 或 splay tree 或任何其他数据结构?

谢谢

您不需要将霍夫曼树导出到 binary.txt 文件中。您需要一个 Map,它将文本中的所有符号映射到 (0,1)-strings - 用于编码,并且您需要一个 reversed Map - 用于解码。您应该使用霍夫曼算法来构建树,然后 - 使用这棵树来填充地图。之后你就可以忘记树了。

因此,您的 'binary.txt' 文件必须只包含这种以某种形式反转的地图,您的解码器可以理解。

如果创建规范的霍夫曼表示,则只能传输代码长度。解码器可以从中重新创建树。