1、Huffman(哈夫曼)树的一些基本概念
1、1哈夫曼树的定义
最简哈夫曼树是一种数据结构,是由德国数学家冯·哈夫曼发现的,又称最优二叉树,是一种带权路径长最短的树。所以Huffman树是一种二叉树。
1、2哈夫曼树的经典应用
哈夫曼树最经典的应用时在通信领域的哈夫曼编码上面。经哈夫曼编码的信息消除了冗余的数据,加提高了通信信道的传输效率,目前,Huffman编码计数还是数据压缩的重要方法。关于Huffman编码的具体介绍与实现,我觉得这篇文章写的很相信,也很容易理解,感兴趣的读者也可以阅读一下Huffman编码的具体介绍与实现。
1、1关于路径长度
路径(path) 是树中一个结点到另一个结点之间的分支构成该两结点之间的路径。路径长度(path length)是指路径上的分支条数。树的路径长度是树的根节点到每一个结点的路径长度之和。
根据树的定义可以清楚的知道,从树的根结点到达树中每一结点有且仅有一条路径。若设树的根节点处于第一层,某一结点处于第k层,因为从根节点到达这个结点的路径上的分支条数为k-1,所以有:从根节点到其他各节点的路径长度等于该结点所处的层次k-1。
二叉树中,如果想要树的路径长度(根节点到各结点的路径长度之和)达到最小,那么该二叉树一定是完全二叉树或者理想平衡二叉树。
带权路径长度:在一棵树中,如果其结点上附带有一个权值,通常把该结点的路径长度与该结点上的权值之积称为该结点的带权路径长度(weighted path length)。树的带权路径长度:如果树中每个叶子上都带有一个权值,则把树中所有叶子的带权路径长度之和称为树的带权路径长度。设某二叉树有n个带权值的叶子结点,则该二叉树的带权路径长度记为: