Skip to content

2019年 408 数据结构 第 3 题

数据结构2019年选择题2分

题目

对 n 个互不相同的符号进行哈夫曼编码。若生成的哈夫曼树共有 115 个结点,则 n 的值是( )。

错因

A

凭手感记成了"总结点数 = 2n + 3"或类似带额外修正项的公式,反推 n=56。本质是没掌握哈夫曼树是严格二叉树(无 1 度结点)这一关键性质,公式记错了。

B

把哈夫曼树误记为"n 个叶子 + n+1 个内部结点 = 2n+1",反推得 115 = 2n+1, n=57。常见混淆来源:把哈夫曼树和满二叉树混为一谈,但哈夫曼树的内部结点数是 n−1,不是 n+1。

D

没有意识到哈夫曼树必为严格二叉树,按一般完全二叉树用 之类的公式凑数;或者把 115 当作总结点数除以某个估算的"层比"得到 60。完全没用到哈夫曼树的结构性质。

总解析

哈夫曼树的关键性质:哈夫曼树是严格二叉树——除叶子外,每个内部结点都恰好有 2 个孩子,没有度为 1 的结点。

理由:哈夫曼算法每次从优先队列里取出权值最小的两棵子树,合并为一个新内部结点(权值 = 两子树权值之和)。所以每个内部结点都是"两个孩子合并"的结果,度恰好为 2。

总结点数公式

设叶子数为 n(即 n 个符号),内部结点数为 i。严格二叉树有等式 n = i + 1,即 i = n − 1

代入求解

最终答案是 C

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数