哈夫曼树

概念

哈夫曼树是一种带权路径长度最短的二叉树,也称为最优二叉树。下面用一幅图来说明。

这里写图片描述

它们的带权路径长度分别为:

图a: WPL=5*2+7*2+2*2+13*2=54

图b: WPL=5*3+2*3+7*2+13*1=48


如何画哈夫曼树

第一步:按从小到大排序。
【5、8、4、11、9、13】→【4、5、8、9、11、13】
这里写图片描述

第二步:选最小两个数画出一个树,最小数为4和5。

给定的4、5、8、9、11、13为白色, 红色的9为4+5,与给定的白9无关,新序列为:【红9(含子节点4、5)、8、9、11、13】
这里写图片描述

之后一直重复第一、第二步:排序然后取两个最小值。实际就是一个递归过程
排序:
这里写图片描述

取两个最小数8和9:
这里写图片描述

排序:
这里写图片描述

取两个最小数9和11:

这里写图片描述

排序,然后取两个最小数13和17:
这里写图片描述

取两个最小数20和30:
这里写图片描述


带权路径求法

n()

wpl = 9*2+11*2+13*2+8*3+4*4+5*5;


哈夫曼编码

利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。树中从根到每个叶子节点都有一条路径,对路径上的各分支约定指向左子树的分支表示”0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为各个叶子节点对应的字符编码,即是哈夫曼编码。
这里写图片描述


参考选作:https://jingyan.baidu.com/article/a501d80c16dfa0ec620f5e70.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值