霍夫曼二叉树必须是合适的吗?

Does a Huffman Binary Tree have to be proper?

本文关键字:二叉树 霍夫曼      更新时间:2023-10-16

我能找到的霍夫曼编码的所有例子都有偶数字符的工作。如果是奇数个字符,最后一个添加到树的内部节点可以只有一个子节点吗?或者我必须添加某种类型的NULL节点,以便所有内部节点都恰好有2个子节点?

如果是后者,它似乎令人困惑,因为我不确定您将如何为字符提供NULL值(因为所有值都被用作有效的ASCII码)。

char的奇数是没有问题的。但这不会导致只有一个子节点的内部节点。

  /
 /  
a    ×
    / 
   b   c

树的构造方式确保所有内部节点都有两个子节点,无论有多少个char

从一个叶子列表开始,然后在每一步中,将频率最低的两棵树连接在一起,使它们成为左边的树。新节点的右子树,然后是内部节点,直到只剩下一棵树。最终结果中的每个内部节点都是由连接两个子树产生的,因此有两个子树。