二叉树——哈夫曼树

先看图
在这里插入图片描述
参数:7 5 5 2 4
这是无需排列的,需要弄成有序排列如下:2 4 5 5 7

第一步:找到这个数组中最小的连个相加如图
在这里插入图片描述依据哈夫曼原则2+4=6,那么新的数组就是:5 5 6 7

第二步:找到这个数组中最小的连个相加,因为新产生的6不属于接下来 数组中(5 5 6 7)的最小的2个数( 5 5)所以最小的5+5=10这个单独放置,把10加入到数组中 6 7 10
在这里插入图片描述

第三部,数组中6 7 10 的最小数为6 7,所以最小的两个数据相加6+7=13 ,所以新数据10 13
在这里插入图片描述
第三部,数组中10 13 剩下的两个数据相加10+13=26 ,因为第二部产生了一个10还没加载到图中,so
在这里插入图片描述注意事项:如果你新产生的值不在接下里最小俩个数据中如5 5 6,那么5 5这个两个最小数据画的图就到单独放置,最后再画在一起,要知道哈夫曼树是需要把原始数据都挂在到二叉树的叶节点(叶节点就是没有子节点的节点,如步骤一中的图,2和4节点就是叶节点)

在举一个例子:
数组:6 7 13 16 18 30
在这里插入图片描述原始数据:6 7 13 16 18 30
第一步数据13 13 16 18 30,因为新产生的数据13在你接下来要找到最小的2个数中,所以直接在6+7=13的图上画就行

第二步数据 16 18 26 30,因为新产生的数据34不在你接下来要找到最小的2个数中,所以 16+18=34需要单独画

第三步数据 26 30 34,因为新产生的数据26+30=56 ,剩下 34 56
所以26+30=56这个图直接画

第四步数据 34 56 , 剩下 34 56
由于34是第二步产生的,直接和第三步56结合 34+56=90,就得到最终的哈夫曼树

注释:如有错误请联系更正,转载请附加原文链接和出处

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值