【问题标题】:Does a Huffman Binary Tree have to be proper?霍夫曼二叉树必须是正确的吗?
【发布时间】:2013-05-08 21:07:03
【问题描述】:

我能找到的所有霍夫曼编码示例都有偶数个字符可供使用。如果是奇数个字符,添加到树中的最后一个内部节点是否只有一个子节点?还是我必须添加某种 NULL 节点,以便所有内部节点都有 2 个子节点?

如果是后者,这似乎令人困惑,因为我不确定您如何为 char 设置 NULL 值(因为所有值都被用作有效的 ASCII 代码)。

【问题讨论】:

    标签: c++ binary-tree huffman-code


    【解决方案1】:

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

      /\
     /  \
    a    ×
        / \
       b   c
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-15
      相关资源
      最近更新 更多