CHAPTER_9 提高篇(3)——数据结构(2)
9.8.1哈夫曼树
首先来明确两个定义。对于一棵树,我们把叶子节点的权值乘以其路径长度的结果称为这个叶子节点的带权路径长度。例如下图中,叶子节点G的带权路径长度为 3 * 2 = 6 。树的带权路径长度(WPL)等于它所有叶子节点得到带权路径长度之和。对于下面这棵树,其WPL等于3 * 2 + 5 * 2 + 13 * 1 = 29 。

我们有如下问题:已知n个数,寻找一棵树,使得树的所有叶子节点的权值为这n个数,并且使得这棵树的带权路径长度最小。这棵带权路径长度最小的树被称为哈夫曼树(又称最优二叉树)。
寻找这棵树的过程就是给定叶子节点构造哈夫曼树的过程,算法如下:
(1)初始状态共有n个节点(权值分别为给定的n个数),将它们视作n棵只有一个节点的树。
(2)合并其中根节点权值最小的两棵树,生成两棵树根节点的父亲节点,权值为这两个根节点的

本文详细介绍了哈夫曼树的概念,包括如何构造最小带权路径长度的哈夫曼树及其在数据结构中的应用。此外,还探讨了哈夫曼编码的原理,通过举例说明了如何根据字符出现频率构建编码,实现平均码长最短的编码方案。
最低0.47元/天 解锁文章
219

被折叠的 条评论
为什么被折叠?



