数据结构之哈夫曼树的实现

本文介绍了哈夫曼树的基本概念,包括定义、经典应用和路径长度的计算。哈夫曼树是一种最简二叉树,常用于数据压缩的哈夫曼编码。文章详细阐述了哈夫曼树的构造过程,并提到了使用最小堆优化构造过程的可能性。最后,文章提供了Huffman树的实现源代码。
摘要由CSDN通过智能技术生成

1、Huffman(哈夫曼)树的一些基本概念

1、1哈夫曼树的定义

最简哈夫曼树是一种数据结构,是由德国数学家冯·哈夫曼发现的,又称最优二叉树,是一种带权路径长最短的树。所以Huffman树是一种二叉树。

1、2哈夫曼树的经典应用

哈夫曼树最经典的应用时在通信领域的哈夫曼编码上面。经哈夫曼编码的信息消除了冗余的数据,加提高了通信信道的传输效率,目前,Huffman编码计数还是数据压缩的重要方法。关于Huffman编码的具体介绍与实现,我觉得这篇文章写的很相信,也很容易理解,感兴趣的读者也可以阅读一下Huffman编码的具体介绍与实现

1、1关于路径长度

路径(path) 是树中一个结点到另一个结点之间的分支构成该两结点之间的路径。路径长度(path length)是指路径上的分支条数。树的路径长度是树的根节点到每一个结点的路径长度之和。

根据树的定义可以清楚的知道,从树的根结点到达树中每一结点有且仅有一条路径。若设树的根节点处于第一层,某一结点处于第k层,因为从根节点到达这个结点的路径上的分支条数为k-1,所以有:从根节点到其他各节点的路径长度等于该结点所处的层次k-1

二叉树中,如果想要树的路径长度(根节点到各结点的路径长度之和)达到最小,那么该二叉树一定是完全二叉树或者理想平衡二叉树。

带权路径长度:在一棵树中,如果其结点上附带有一个权值,通常把该结点的路径长度与该结点上的权值之积称为该结点的带权路径长度(weighted path length)。树的带权路径长度:如果树中每个叶子上都带有一个权值,则把树中所有叶子的带权路径长度之和称为树的带权路径长度。设某二叉树有n个带权值的叶子结点,则该二叉树的带权路径长度记为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值