哈夫曼树——【实例】利用3,6,8,12,5,7这六个值作为叶子结点的权,由该权值集合构造的哈夫曼树中带权路径长度之和为多少,该树的深度为多少。

利用3,6,8,12,5,7这六个值作为叶子结点的权,由该权值集合构造的哈夫曼树中带权路径长度之和为多少,该树的深度为多少。

基础知识
哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树。
带权路径长度:从根结点到该结点之前的路径长度与该节点上权的乘积成为该结点的带权路径长度。
树的带权路径长度:树中所有子叶结点的带权路径长度之和。

算法步骤:

第一步:先结点权值进行排序3,5,6,7,8,12。
第二步:选择两个权值最小的结点,分别作为左、右子树构造一个二叉树。根结点权值为左、右子树权值的和。
在这里插入图片描述
第三步:将得到的新的结点,代替这两个权值最小的结点。

(8),6,7,8,12。

第四部:重复(2)和(3),直到F只含一棵树为止。这棵树就是带权路径最小的树,就是哈夫曼树。


第二步
在这里插入图片描述
第三部
(8),(13),8,12


第二步
在这里插入图片描述
第三步
(16),(13),12


第二步
在这里插入图片描述
第三步
(16),(25)


第二步
在这里插入图片描述

该树的带权路径长度为(原公式):
①WPL=(3+5+6+7)*3+(8+12)*2=103
还有另外一种算法:(所有两个数相加的和的总和)
②WPL=8+13+16+25+41=103

算法原理

①原计算公式是树中所有子叶结点带权路径长度之和。
(带权路径长度:从根结点到该结点之间的路径长度与该结点的权值的乘积。)
②另一种算法是反过来理解的,从该叶子结点到根结点之间的路径长度与该结点的权值计算的结果。
算法原理②大白话解释:以3和5的叶子结点开始为例。
当3和5叶子结点往上走一个路径长度需要花费8的权值;该8成为新的子叶结点与另一个子叶结点8在同一层,这两个子叶结点再往上走一个路径长度需要花费16的权值。
同理所有圆圈里面的值,就是所有子叶结点到根结点所需要花费的权值。所以所有两个数相加的和的总和就是该树的带权路径长度

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值