Appearance
题目
在由 6 个字符组成的字符集 S 中,各个字符出现的频次分别为 3, 4, 5, 6, 8, 10,为 S 构造的哈夫曼树的加权平均长度为( )。
错因
A
可能直接按"6 个叶子的满二叉树深度"估算。6 个叶子的二叉树最浅是深度 3 的不满二叉树(4 个深度 3 + 2 个深度 2),平均长度 ;如果用更乐观估计(4 个深度 2 + 2 个深度 3)就是 ,凑出 2.4 大概是把这两个估计折中又算错了一次——总之没真正按权重做哈夫曼合并。
C
把"加权平均长度"当成了"普通平均长度"——直接对 6 个叶子的深度取算术平均:。但定义里要乘频次(即权重),频次大的字符深度小,频次小的字符深度大,加权后的平均 < 算术平均。
D
可能按某种次优编码计算或合并顺序错了:比如忘了"每次取最小两个"原则,先合并了 6+8 而不是 3+4,导致树形不是哈夫曼树。错误的合并顺序会让 WPL 比正确值更大,得到偏大的结果(如 2.75)。
总解析
第一步:构造哈夫曼树(每次合并最小两个)
初始集合:{3, 4, 5, 6, 8, 10},权重总和 = 36
| 步骤 | 取出 | 合并为 | 当前集合 |
|---|---|---|---|
| 1 | 3, 4 | 7 | |
| 2 | 5, 6 | 11 | |
| 3 | 7, 8 | 15 | |
| 4 | 10, 11 | 21 | |
| 5 | 15, 21 | 36 | 根 |
第二步:读取每个叶子的深度
| 叶子 | 频次 | 深度 |
|---|---|---|
| 3 | 3 | 3 |
| 4 | 4 | 3 |
| 8 | 8 | 2 |
| 10 | 10 | 2 |
| 5 | 5 | 3 |
| 6 | 6 | 3 |
第三步:算 WPL(带权路径长度)
第四步:加权平均长度 = WPL / 总权重
最终答案是 B(2.5)。