创建霍夫曼树,霍夫曼编码以及使用霍夫曼编码压缩文件

那么,什么是霍夫曼树(赫夫曼树)呢?

  给定n个权值(权值就是每个节点里面存放的数据,但是根据业务需求不同,存放的数据类型有些差别)作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

看这个定义你肯定也很懵,我这里举一个例子,就不要专研这个定义了,通过图形可以很快的看懂

例如:权值分别为 5,3,9,1,6的这几个节点构建一颗二叉树

首先排序这样创建的二叉树才是有序的

那么排序的结果就是 1,3,5,6,9,然后把每个节点当做一颗最简单的二叉树,排序结果如下:

那么第二次操作:把前面两个权值加起来构建一个新的节点,然后把这个节点和前两个节点合并成一个二叉树,然后继续排序:

继续下去:

 

 

 

最后一步:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值