软件设计师 · 高频练习

权值为 2、3、7、9 的哈夫曼树,带权路径长度是多少?

中级 单选题 第 957 题 困难 软件设计师哈夫曼树WPL最优二叉树哈夫曼编码
题目

以权值 2、3、7、9 构造哈夫曼树。若根结点深度为 0,则该树的带权路径长度 WPL 为()。

A 21
B 33
C 38
D 42
题目类型:原创高频练习题 用途:用于帮助理解软件设计师相关考点和答案解析,不等同于官方真题。
正确答案
C
答案解析

每次选择最小的两个权值合并:2+3=5,5+7=12,9+12=21。哈夫曼树 WPL 等于各次合并权值之和,即 5+12+21=38。也可按叶子深度核对:9×1+7×2+3×3+2×3=38。

选项分析

A

只取了根结点总权值 21,没有计算各叶子到根的累计路径代价。

B

合并过程或叶子深度计算有遗漏,不能由正确的三次合并得到。

C

正确。5+12+21=38。

D

把总权值 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,也等于各叶子权值与深度乘积之和。