哈夫曼树的正确打开方式

1.哈夫曼树画法交流
假设一组权值节点如下,并画出哈夫曼树,
(4,5,8,24,13,17,34)
画哈夫曼树的规则之一就是:
1.选出权值差值最小的两个节点互为兄弟节点(即4,5互为兄弟节点)
2.合并后把他们的父节点权值(即:9)带入到原队列中和其他节点进行比较,并找出其中最小的两个节点并合并之,那么就让该节点和新的节点9合并(即让节点9和节点8互为兄弟节点)并再次合并成一个新的节点(即:17)
3.重复上面的步骤,把再次合并后的新的节点带入到原队列中和剩下的其他节点相比,但如果剩下的节点中至少有2个节点不大于该合并后的新的节点我们就让这两个节点互为兄弟节点并合并他们。(即原队列中存在13,17两个节点其不小于新节点17,让他们互为兄弟节点合并之)遵循两个节点差值最小的互为兄弟节点。
4. 还是遵循节点间的权值差值最小的2个节点互为兄弟节点
因此不难发现新节点17与原队列中剩下的节点24互为兄弟节点并合并,新节点30与原队列中剩下的节点34互为兄弟节点
合并后的新节点为41和64,这是原队列中所有的节点已经被合并完。故该哈夫曼树的根节点为105。
哈夫曼树构造思想如下图:
在这里插入图片描述
整理后哈夫曼树如下:
在这里插入图片描述
引入二进制编码
在这里插入图片描述
各叶子节点的二进制编码表示如下:
8:000 ,4:0010, 5:0011, 24:01, 13:100, 17:101, 34:11

这样构造出的哈夫曼树满足权值越小的节点离根节点越远的特性!
怎么样是不是发现很简单!有没有学会!
这只是我个人在构造哈夫曼树时总结出来的经验,如有雷同不胜荣幸!
如果有什么不同的观点欢迎在下方评论!

  • 15
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值