霍夫曼码长

Huffman code length

我想构建一个霍夫曼树并根据它们的频率为所有 255 个字节的值分配一个代码。但是对于我的应用程序,我需要一个散列 table 来在恒定时间内获取一个字节的代码。但在最坏的情况下,树可能非常不平衡,以至于某些字节具有非常大的密钥(甚至 254 位长)。所以维护一个散列 table 是非常困难的。该代码需要高性能,因此将它们作为字符串进行排序是行不通的。我该如何解决这个问题?

为什么 256 个值需要哈希 table?只需一个 256 条目 table,您可以在其中直接为每个字节索引代码。

每个代码最多 32 个字节长,因此只有 table 个 256 个条目,每个条目的固定数量为 33 个字节。 8448 字节。 33 的第一个字节是代码的长度(以位为单位),其余字节是代码,每个字节只使用必要的位数。