C语言实现哈夫曼树求解及其编码输出
目标给定一组权值,根据权值求其一个哈夫曼树,并通过中序遍历的顺序输出叶子节点的哈夫曼编码。分析首先回顾哈夫曼树的求解过程:在权值中取最小的两个x,y,以这两个权值为叶子节点,生成一个权值为x+y的父亲节点;从权值组中删除x,y,添加x+y进入权值组;循环直到权值组仅剩一个元素,该元素为根节点的权值。一个重要的点是我们希望输入的权值有序,并且时刻保持有序,因此选用链表来存储权重,并每次插入时都按序排序,接下来只要用代码实现上述步骤便可完成哈夫曼树的构建;那么如何得到叶子节点的哈夫曼编码呢?
原创
2021-10-26 17:03:33 ·
3468 阅读 ·
1 评论