哈夫曼树的基本应用与概念

概念

哈夫曼树又叫最优二叉树,等等在做解释。我们先引入“路径”和“长度”的概念。
路径:即从树的一个结点到另一个结点所经过的分支构成
长度:即路径所经分支的个数
树的路径长度:指从根结点出发,到树中每一个结点的路径长度之和,记作:TL
例如:有这么一个二叉树:A->B->C,则A到C的路径为ABC,长度为2,树的路径长度为3
补充:结点数相同的情况下,完全二叉树的树的路径长度最短,但满二叉树的又小于等于完全二叉树
:给树中的每个结点赋以一个值,这个值就是权
结点的带权路径长度:结点的权乘以路径长度
树的带权路径长度:所有叶子结点的带权路径长度之和

贪心算法

我们利用贪心算法去构造一棵哈夫曼树,主要核心思想是四句话:
构造森林全是根
选用两小造新树
删除两小添新人
重复二三剩单根

具体实现:
在这里插入图片描述
给定四个带权的结点a、b、c、d,“构造森林全是根”,也就是让这四个点全部作为根结点列成一排,“选用两小造新树”,选出其中最小的两个根作为一棵新树,根结点为二者之和,例如这里的2,4生成新根:6;“删除两小添新人”,将原来这两个根作为子树画入图中;“重复二三剩单根”,不断重复二三步骤,只保留最后一个根结点,最终演化为一棵哈夫曼树。
有上述哈夫曼树的构成方式我们可以证明文章第一句话:哈夫曼树是最优二叉树,且哈夫曼树的结点的度只能为0,2,却不可能为1.

性质

①假设一棵树有n个结点,合并后会产生n-1个结点,所以一共有2n-1个结点
②一棵哈夫曼树中,权越大,离根越近(由具体实现部分可知,正因大权离根更近,所以树的带权路径长度才最短)
哈弗曼编码
在这里插入图片描述
因此我们选用哈夫曼编码
方法
①统计字符集中每个字符在电文中出现的平均频率(频率越大,要求编码距离越短)。
②利用哈夫曼树的特点,权越大的叶子离根越近;将每个字符的概率值作为权,构造哈夫曼树=>概率越大的结点,路径越短,反之越长。
③构建好哈夫曼树之后,在每个分支上标0或1,结点的左边标0,右边则标1,把根结点到叶子结点的分支路径全部表示出来,就是一个字符的编码。
在这里插入图片描述
通过哈夫曼编码去解码
提供一个字符频度表,通过叶子结点确定每个数字代表的字符,然后老办法:左为0,右为1,最后根据得到的编码去解开每段码所代表的含义。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值