构建哈夫曼树及编码
第1关:构建哈夫曼树
任务描述
本关任务:构建哈夫曼树,从键盘读入字符个数n及这n个字符出现的频率即权值,构造带权路径最短的最优二叉树(哈夫曼树)。
相关知识
哈夫曼树的定义
设二叉树具有n个带权值的叶子结点{w1,w2,...,wn},从根结点到每个叶子结点都有一个路径长度。
从根结点到各个叶子结点的路径长度与相应结点权值的乘积的和称为该二叉树的带权路径长度,记作:
其中,wi为第i个叶子结点的权值,li为第i个叶子结点的路径长度。
例如:
以上二叉树的带权路径长度值: WPL=1×3+3×3+5×2+7×1=29
给定一组具有确定权值的叶子结点,可以构造出许多形状的二叉树,把其中具有最小带权路径长度的二
本文介绍了如何构建哈夫曼树以及根据哈夫曼树生成哈夫曼编码。首先,详细阐述了哈夫曼树的定义、构造算法和存储结构,并提供了构建哈夫曼树的编程要求。接着,讲解了哈夫曼编码的特性,以及如何通过哈夫曼树生成编码。文章以实际例子辅助理解,并给出了编程任务和测试输入输出的示例。
订阅专栏 解锁全文
1691

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



