考研之数据结构019_哈夫曼树

一、带权路径长度

结点的权:有某种现实含义的数值(也就是某一条边,规定一个数值。例如:地图中两点的距离是10KM)

结点的带权路径长度:从树的根到该结点的路径长度(经过的边数)与 该此结点上权值乘积

树的带权路径长度:树中所有叶结点的带权路径长度之和
如下图:
在这里插入图片描述

二、哈夫曼树的定义

在含有n个带权叶结点的二叉树中,其中带权路径长度(WPl)最小的二叉树称为哈夫曼树,也称最优二叉树。
在这里插入图片描述

三、哈夫曼树的构造

怎么构造包含几个叶子结点的哈夫曼树?

1.选择两个权值最小的结点,让这两个结点成为兄弟。
2.结合一棵新树后,将这两个权值之和,最为这棵树的根节点
3.在选择一个权值最小的结点,与刚生成这棵树结点成为兄弟
重复2,3

这样就可以带权路径长度最小的一棵树

在这里插入图片描述
性质:
1.每个初始结点最终都成为叶子结点,且权值越小的结点到根节点的路径长度越大。
2.每次都会让两个树进行结合,n个结点,我们要两两结合成一棵树,所以需要N-1次合并。
3.每次合并后,会增加一个新枝结点。哈夫曼树的结点总数为:2n-1
4.哈夫曼树不存在度为1的结点。
5哈夫曼树并不唯一,但带权路径(WPL)必然相同且最优

四、哈夫曼编码

固定长度编码——每个字符用相等长度的二进制位表示
可变长度编码——允许对不同字符,用不同等长的二进制位表示
若没有一个编码是另一个编码的前缀,则称这样的编码为前缀编码

有哈夫曼树得到哈夫曼树编码——字符集中的每个字符作为一个叶子结点,各个字符出现的频度作为结点的权值,根据之前介绍的方法构造哈夫曼树。

在这里插入图片描述
可变长度编码,允许对不同字符用不等长的二进制位表示

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值