数据结构 第六章(学习笔记四(哈夫曼树))

哈夫曼树的定义

设二叉树具有n个带权值的叶节点,那么从根节点到各个叶节点的路径长度与相应节点权值的乘积的和,叫做二叉树的 带权路径长度
数据结构 第六章(学习笔记四(哈夫曼树))
权: 权代表的是叶子结点的数据信息,是具体的值,也就是结点所储存的值。
数据结构 第六章(学习笔记四(哈夫曼树))
具有最小带权路径长度的二叉树称为 哈夫曼树 (也称最优数)

相同的叶节点构造出不同的二叉树
数据结构 第六章(学习笔记四(哈夫曼树))

构造哈夫曼树

构造哈夫曼树的 原则
① 权值越大的叶节点越靠近根节点;
② 权值越小的叶节点越远离根节点。
构造哈夫曼树的 过程
数据结构 第六章(学习笔记四(哈夫曼树))
数据结构 第六章(学习笔记四(哈夫曼树))

哈夫曼编码

规定哈夫曼树中的 左分支为0,右分支为1 ,则从根节点到每个节点所经过的分支对应的0和1组成的序列便为该节点对应字符的编码,这样的编码称为 哈夫曼编码
数据结构 第六章(学习笔记四(哈夫曼树))
在一组字符的哈夫曼编码中,不可能出现一个字符的哈夫曼编码是另一个字符哈夫曼编码的 前缀
例如,有4个字符的编码如下:100, 001, 0,1
这是哈夫曼编码吗?显然是错误的,因为0是001的前缀,不可能。
所以哈夫曼编码也称为 前缀编码
数据结构 第六章(学习笔记四(哈夫曼树))
分析:选D。
数据结构 第六章(学习笔记四(哈夫曼树))
分析:选 A。哈夫曼树一定是二叉树,但不一定是完全二叉树。