C语言《数据结构》——哈夫曼树

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

文章目录

  • 前言
  • 一、哈夫曼树是什么?
  • 二、哈夫曼树的构建
    • 1.WPL的计算:
    • 2.哈夫曼树
    • 2.构造哈夫曼树的原则
    • 3.构建哈夫曼树的过程
    • 2.哈夫曼编码
  • 总结


前言

哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式,哈夫曼编码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,该方法完全依据字符出现概率来构造异字头的平均长度最短的码字,有时称之为最佳编码,一般就叫做Huffman编码(有时也称为霍夫曼编码)。


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

一、哈夫曼树是什么?

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

二、哈夫曼树的构建

1.WPL的计算:

代码如下(示例):
C语言《数据结构》——哈夫曼树_第1张图片

2.哈夫曼树

相同的叶节点可以构造出不同的二叉树
C语言《数据结构》——哈夫曼树_第2张图片

2.构造哈夫曼树的原则

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

3.构建哈夫曼树的过程

C语言《数据结构》——哈夫曼树_第3张图片
C语言《数据结构》——哈夫曼树_第4张图片

C语言《数据结构》——哈夫曼树_第5张图片

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

2.哈夫曼编码

哈夫曼编码特点:权值越大的字符编码越短,反之越长。
C语言《数据结构》——哈夫曼树_第6张图片


总结

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

你可能感兴趣的:(数据结构)