c语言数据结构————哈夫曼树

150 阅读1分钟

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

@TOC


前言

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天. 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。


提示:以下是本篇文章正文内容,下面案例可供参考

一、哈夫曼树是什么?

设二叉树具有n个带权值的叶节点,那么从根节点到叶结点的路径长度与相应节点权值的乘积的和,叫做二叉树的在这里插入图片描述

二、哈夫曼树的构建

1.WPL的计算:

代码如下(示例):

2.哈夫曼树

相同的叶节点可以构造出不同的二叉树 在这里插入图片描述

2.构造哈夫曼树的原则

(1).权值越大的根节点越靠近根节点。 (2).权值越小的根节点越远离根节点。

3.构建哈夫曼树的过程

在这里插入图片描述

在这里插入图片描述

该处使用的url网络请求的数据。

2.哈夫曼编码

哈夫曼编码特点:权值越大的字符编码越短,反之越长。 在这里插入图片描述


总结

在一组字符的哈夫曼编码中,不可能出现一个字符的哈夫曼编码是另一个字符哈夫曼编码的前缀。 例如: 100,001,0,1 就不是哈夫曼编码。