哈夫曼树(数据结构)
前言
哈夫曼树是二叉树的应用
一.几个术语定义

1.路径
由一结点到另一结点间的分支所构成。
(如1到4的路径为1到3,3到4这两个分支构成)
2.路径长度
路径上的分支数目。
(如1到6的路径长度为3, 即1到3,3到5,5到6)
3.树的外部路径长度(EPL)
各叶结点(外结点)到根结点的路径长度之和。
(如这棵树的叶子结点为2、4、8、7,2的路径长度为1,4的路径长度是2,8的路径长度为4,7的路径长度是3,所以树的外部路径长度为1+2+4+3=10)
4.树的内部路径长度( IPL )
各非叶结点(内结点)到根结点的路径长度之和。
5.树的路径长度(PL)
PL= EPL+ IPL
IPL = 0+1+2+3 = 6
EPL = 1+2+3+4 = 10
PL = 16

6.权值
为树的叶结点赋予一个权值,一般用于表示出现频度、概率值等。
(就是用于表示叶结点的那个圆圈里的树)
7.扩充二叉树
只有度为 2 的内结点和度为 0的外结点。
(没有度为1的结点的二叉树叫做扩充二叉树)
8.结点的带权路径长度
结点到根的路径长度与结点上权的乘积 (wi*li)。
(结点的带权路径长度就是该结点权值与该结点的路径长度的乘积
如5那个结点的带权路经长度为 5*3=15)
9.树的带权路径长度(WPL)
(我们一般关注的是树的带权路径长度)
树中所有叶子结点的带权路径长度之和。

二.哈夫曼树的定义
对于具有不同带权路径长度的扩充二叉树:
(具有相同权值的叶子结点,它组成了不同的二叉树,那么这四个结点形成的二叉树它的带权路径长度是不同的)

• 对于同样一组权值,放在外结点上,组织方式不同,带权路径长度也不同;
• 带权路径长度最小的扩充二叉树叫做哈夫曼树;
• 哈夫曼树中权值大的结点离根最近。
(权值最大的叶子结点越靠近根结点,权值最小的叶子结点越远离根结点)
三.哈夫曼树的构造
1.基本思想
使权大的结点靠近根
2.构造过程
例:
(1)以5个叶子结点为例,我们把这个五个权值的结点作为叶子,构成了一棵有五棵树的森林。

(2)首先我们从这五棵树的森林的集合中选取权值最小的两棵树,对它进行合并,2、4合并得到了6这个内结点,接下来把2,4删掉,把6加入进这个集合,此时,这个森林中就包括4棵树7、5、9、6。

(3)接下来,重复,从新的集合中找的最小的两棵树,一个是5,一个是6,在进行合并得到11,再把5、6从集合中删除,把11加入,这个森林就包括7,9,11三棵树。

(4)重复,仍然合并两个最小的7、9得到16,把7、9删除,插入16,这个森林包含两棵树11、16。

(5)同样,把11和16合并得到27,把11和16删除,再加入合并后的27,此时这个森林中只

本文深入解析哈夫曼树的基本概念,包括路径、路径长度、带权路径长度等,详细阐述哈夫曼树的构造过程及哈夫曼编码的设计原理。通过实例展示如何利用哈夫曼树实现数据压缩,提高数据传输效率。
最低0.47元/天 解锁文章
7405

被折叠的 条评论
为什么被折叠?



