浙江大学数据结构(5.2.1什么是哈夫曼树)

本文探讨了哈夫曼树及其编码原理,通过实例分析了如何根据结点的查找效率构建更有效的搜索树,从而优化编码过程。文章详细解释了带权路径长度的概念,并介绍了如何构建最优二叉树。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

哈夫曼树与哈夫曼编码

什么是哈夫曼树(Huffman Tree)

  • [例]将百分制的考试成绩转换为五分制的成绩
if (score<60)  grade=1;
else if (score<70)  grade=2;
else if (score<80)  grade=3;
else if (score<90)  grade=4;
else  grade=5;

判定树:

  • score<60需要做一次判断
  • score>90需要做四次判断
  • 若大多数情况score>90,少部分甚至没有score<60,这样的判定树显然不够优化

如果考虑学生成绩的分布概率

分数段0-5960-6970-7980-8990-100
比例0.050.150.400.300.10

 

 

 

  • 查找效率=0.05*1+0.15*2+0.4*3+0.3*4+0.1*4=3.15

修改判定树

if (score<80)
{
    if (score<70)
        if (score<60)  grade=1;
        else  grade=2;
    else grade=3;
}
else if (score<90)  grade=4;
else grade=5;
  • 查找效率=0.4*2+0.3*2+0.15*3+0.05*3+0.10*2=2.2

如何根据结点不同的查找效率构造更有效的搜索树?

 

哈夫曼树的定义

  • 带权路径长度(WPL):设二叉树有n个叶子结点,每个叶子结点带有权值Wk,从根节点到每个叶子结点的长度为Lk,则每个叶子结点的带权路径长度之和就是:WPL=sum(WkLk) ,  1<=k<=n
  • 最优二叉树或哈夫曼树:WPL最小的二叉树

[例]有五个叶子结点,它们的权值为{1,2,3,4,5},用此权值序列可以构造出形状不同的多个二叉树。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值