假设我有一个由单个字符“x
”组成的大字符串,我需要使用哈夫曼编码。
哈夫曼编码是一颗完全二叉树。那么当我们根本不需要两个叶子节点时,如何为单个字符创建哈夫曼编码呢?
假设我有一个由单个字符“x
”组成的大字符串,我需要使用哈夫曼编码。
哈夫曼编码是一颗完全二叉树。那么当我们根本不需要两个叶子节点时,如何为单个字符创建哈夫曼编码呢?
Huffman旨在生成包含原始符号序列中所有信息的最小长度位序列,假设解码器已经知道符号集。如果只有一个符号,则输入数据除了其长度之外不包含任何信息。
在基于Huffman的数据格式中,长度通常单独编码,而不作为Huffman编码的位序列的一部分。因此,单符号Huffman代码的解码器具有重建输入所需的所有信息,无需从Huffman编码的位序列中读取任何内容。因此,Huffman编码器的输出应为0位。
如果您没有单独编码长度,则必须有一个表示序列结束的符号,以便解码器知道何时停止阅读。然后您的Huffman树将有2个节点,并且您将不会遇到此特殊情况。