【数据结构】哈夫曼编码

文章介绍了如何构建哈夫曼树并设计哈夫曼编码。首先,基于给定字母频率,通过升序排列创建二叉树,不断合并最小权重节点直到形成一棵树。然后,通过树的结构赋予每个字母独特的01编码,左子树代表0,右子树代表1。例如,频率为0.02的字母编码为00000,而频率0.32的字母编码为01。
摘要由CSDN通过智能技术生成

设计哈夫曼编码分为两步

一、构建哈夫曼树

假设用于通信的电文由8个字母组成,字母在电文中出现的频率分别为0.07、0.19、0.02、0.06、0.32、0.03、0.21、0.10。

首先为了简洁我们将这些频率重新书写为7、19、2、6、32、3、21、10,此时将电文出现的频率理解为权,并将其以升序排列,得到2、3、6、7、10、19、21、32,将这组数据中较小的两个数构造出一个二叉树,并将这两个数的权相加得到形成的二叉树的权,得到新的数组5、6、7、10、19、21、32,重复这一过程,如图:

二、设计哈夫曼编码 

将哈夫曼树的任意一个节点与他的左孩子之间的连线标0,与他右孩子之间的连线标1,然后按照路径将哈夫曼编码读出即可,如图:

例如2(频率0.02的字母)的哈夫曼编码为:00000

       32(频率为0.32的字母)的哈夫曼编码为:01

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樊梓慕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值