摘要:
1,哈夫曼树的介绍
2,哈夫曼树的构造
3,哈夫曼树带权路径长度计算
4,哈夫曼树的编码
5,哈夫曼树的解码
1,哈夫曼树的介绍
哈夫曼树(Huffman Tree)也叫霍夫曼树,或者赫夫曼树,又称为最优树,是因为它是一种带权路径长度最短的二叉树。在学习哈夫曼树之前我们先来了解一些和哈夫曼树相关的概念:
路径:从任一个节点往下到达其它节点之间的通路。
路径长度:路径中线段的个数。
节点的权:节点的值。
节点的带权路径长度:从根节点到该节点之间的路径长度与该节点权的乘积。
树的带权路径长度:所有叶子节点的带权路径长度之和。
在讲解哈夫曼树之前我们来看这样一个问题,假如老师根据学生的成绩给学生进行评级,有下面几个等级:
String level(int score) {
if (score < 60) return "不及格";
else if (score < 70) return "及格";
else if (score < 80) return "中等";
else if (score < 90) return "良好";
else return "优秀";
}
上面的分支语句整理出来像一棵二叉树,如下图所示:
<