以权值 2、3、7、9 构造哈夫曼树。若根结点深度为 0,则该树的带权路径长度 WPL 为()。
每次选择最小的两个权值合并:2+3=5,5+7=12,9+12=21。哈夫曼树 WPL 等于各次合并权值之和,即 5+12+21=38。也可按叶子深度核对:9×1+7×2+3×3+2×3=38。
选项分析
只取了根结点总权值 21,没有计算各叶子到根的累计路径代价。
合并过程或叶子深度计算有遗漏,不能由正确的三次合并得到。
正确。5+12+21=38。
把总权值 21 简单乘 2,忽略不同叶子的深度并不相同。
本题为什么容易错
WPL 不是所有权值之和,也不是内部结点个数。权值越大的叶子应越靠近根,权值越小的叶子可以更深,这正是哈夫曼树使总带权路径最小的原因。
简短答案
权值为 2、3、7、9 的哈夫曼树,带权路径长度是多少,正确答案是 C(38)。每次选择最小的两个权值合并:2+3=5,5+7=12,9+12=21。哈夫曼树 WPL 等于各次合并权值之和,即 5+12+21=38。也可按叶子深度核对:9×1+7×2+3×3+2×3=38。
易混淆概念对比表
| 概念 | 本题判断 | 区别要点 | 记忆提示 |
|---|---|---|---|
| 21 | 本题干扰项 | 只取了根结点总权值 21,没有计算各叶子到根的累计路径代价。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 33 | 本题干扰项 | 合并过程或叶子深度计算有遗漏,不能由正确的三次合并得到。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
| 38 | 本题正确答案 | 正确。5+12+21=38。 | 看到题干核心场景时优先联想到它 |
| 42 | 本题干扰项 | 把总权值 21 简单乘 2,忽略不同叶子的深度并不相同。 | 看到该词不要急着选,先判断是否真正解决题干问题 |
本题易混淆选项怎么区分
- 21:只取了根结点总权值 21,没有计算各叶子到根的累计路径代价。
- 33:合并过程或叶子深度计算有遗漏,不能由正确的三次合并得到。
- 42:把总权值 21 简单乘 2,忽略不同叶子的深度并不相同。
知识点详解
哈夫曼算法每次合并权值最小的两棵树,新结点权值为二者之和,直到只剩一棵树。每次合并后,被合并子树中所有叶子的深度都增加 1,因此新增的带权路径代价恰好等于该次合并权值,这就得到 WPL 等于合并值之和。
备考速记
两小合一放回去,合并数字全加起。
WPL 在哈夫曼编码场景中的作用
WPL在本题中的核心价值,是解决“以权值 2、3、7、9 构造哈夫曼树。若根结点深度为 0,则该树的带权路径长度 WPL 为()”这个场景问题。复习时不要只背选项名称,还要理解它为什么适用于该场景,以及它能解决哪类安全、流程或管理问题。
同类题怎么考
- 给权值计算哈夫曼树WPL
- 根据字符频次求编码总长度
- 判断一组前缀编码是否可能是哈夫曼编码
WPL 在软件设计师软考中的考法
软考选择题通常不会只考概念定义,还会把WPL放到哈夫曼编码场景中,要求判断它的作用、适用范围或与相近概念的区别。遇到这类题时,先抓住题干中的业务场景,再看哪个选项最能解决该场景下的核心问题。
解题思路
这道题不要先急着画得很漂亮。把权值写成一排,每次划掉两个最小数并写回它们的和:2、3 合成 5;5、7 合成 12;最后 9、12 合成 21。把写回的 5、12、21 相加,就是 38。
考点定位
构造时每轮都从当前集合中取最小的两个权值;计算 WPL 时可以累加每次合并值,也可以在树画完后计算叶子权值乘深度。
易错提醒
- 每轮仍从原始权值中选最小值,忘记把新合成权值放回集合
- 把根深度按1计算,导致所有编码长度多1
- 把内部结点权值之和与叶子权值之和混淆
备考提示
- 数字不多时用‘合并值累加法’最快,画树用于复核。
- 若题目问总编码位数,频次就是权值时,答案与 WPL 相同。
你可能还想了解
- 哈夫曼树WPL为什么等于合并权值之和?
- 哈夫曼树根结点深度从0还是1开始?
- 字符频率怎么换算编码总位数?
- 权值相同时哈夫曼树是否唯一?
本文小结
按最小权值逐次合并得到 5、12、21,WPL 为三次合并值之和 38,也等于各叶子权值与深度乘积之和。