构造哈夫曼树以及求哈夫曼编码、树的带权路径长度

 我们先搞清楚这几个概念

 构造哈夫曼树的方法

 

将每种字符出现的频率先收集起来放在最上方,然后选择两个频率最小的增加到图中,并将他们的和作为他们的父节点,增加到图中,在最上方删除选择的两个节点(4和2),并添加他们的父节点6到最上方中

 

 

 选择最上方当前两个最小的节点6和5,作为子节点构造得到他们的父节点5+6=11,在最上方删除5和6,增加11

 选择最上方当前两个最小的节点7和9,作为子节点构造得到他们的父节点7+9=16,在最上方删除7和9,增加16

  选择最上方当前两个最小的节点11和16,作为子节点构造得到他们的父节点11+16=27,在最上方删除11和16,增加27

 

 最终得到的这个图就是构造正确的 哈夫曼树

 我们来看第二问  求出每个字符的哈夫曼编码

在题目中找到字符

a对应的频率是4 b对应的频率是7 c对应的频率是5 d对应的频率是2 e对应的频率是9

在原来的哈夫曼树中,左子树的边都赋值为0,右子树的边都赋值为1,从顶点27出发,沿着边寻找每个字符对应的频率,沿着边的足迹就是每个字符对于的哈夫曼编码值     结果如上图所示

第三问叫 求11000111000101011的对应电文,根据左图寻找每串数字对应字母的哈夫曼编码,互相比较得到结果

 第四问叫求带权路径长度

 树的带权路径长度: 树中所有叶结点的带权路径长度之和

这里左下方的5是这个树的一个叶节点(靠近树最外边缘的节点),他距离顶点27的边有2条(5—11和11—27)。  5叶节点的权值是5 乘边数 2  即(5*2)其他节点 以此类推,所有之和就是这个数的带权路径长度

 我们来看一道例题

 

 这个是他构造出来的哈夫曼树

 

 

 

 

 

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值