【发布时间】:2012-10-24 05:06:24
【问题描述】:
我正在研究基于频率表的霍夫曼树。频率表是通过计算给定字符串中字符的频率并将相应的项目(字符和频率)放在 LinkedList 中生成的。然后,我需要按照它们的频率顺序将这些项目放在霍夫曼树中。我知道它背后的逻辑是确保每个子树都有左右节点,添加它们的频率,使用它们添加的频率创建一个根节点,将下一个频率分别放在左右树中并重复此过程直到没有更多的频率,并且子树与添加频率的根相连;我遇到的麻烦是弄清楚如何实现代码。
代码相当广泛,所以我宁愿避免发布所有代码,一般布局是我有一个允许我构建表的 HuffmanFrequencyTable 类,一个允许我们创建节点以放置在树中的 HuffmanTreeNode 类,以及帮助我们创建实际树的 HuffmanTree 类。然后,一个编码类输入一个字符串,并使用它创建的 HuffmanFrequencyTable 从该字符串构建树。这是一个家庭作业问题,所以请不要提供解决方案,我只是希望能帮助弄清楚它的代码中的逻辑。
现在,我正在创建一个已放置在树中的字符数组,查找表中剩余字符中不在数组中的最低频率,并尝试将它们放置在叶子中。当子树中的基本叶子已满时,我试图添加这些值,创建一个节点,然后继续向上树。我为此使用了一个 for 循环。这看起来是正确的开始吗?
【问题讨论】:
标签: java tree huffman-code