哈夫曼树的基本概念
哈夫曼树的构造算法
哈夫曼树的构造示例
哈夫曼编码的基本概念
哈夫曼编码的程序实现
哈夫曼树的基本概念
路径
从树中一个结点到另一个结点之间的分支构成这两个结点间的路径
结点的路径长度
两结点间路径上的分支数
结点的路径长度示例
示例1
从 A 到 B C D E F G H I 的路径长度分别为:1 1 2 2 3 3 4 4
示例2
从 A 结点到 B C D E F G H I 的路径长度分别为:1 1 2 2 2 2 3 3
树的路径长度
从树的根节点到每一个结点的路径长度之和。记作:TL
同样是上面的两颗树
TL(a) = 0 + 1 + 1 + 2 + 2 + 3 + 3 + 4 + 4 = 20
TL(b) = 0 + 1 + 1 + 2 + 2 + 2 + 2 + 3 + 3 = 16
结点数目相同的二叉树中,完全二叉树是路径长度最短的二叉树(但是路径长度最短的不一定是完全二叉树)
权(weight)
将树中结点赋给一个有着某种意义的数值,则这个数值称为该结点的权
。
结点的带权路径长度
从根
节点到该结点之间的路径长度
与该结点的权
的乘积
。
树的带权路径长度
树中所有叶子
结点的带权路径长度之和
记作:WPL(weight path length)
示例
有四个结点 a b c d 权值分别为 7 5 2 4
构造以此 4 个结点为叶子结点的二叉树
带权路径长度是
WPL(a) = 7x2 + 5x2 + 2x2 + 4x2 = 36
WPL(b) = 7x3 + 5x3 + 4x2 + 2x1 = 46
哈夫曼树
也即最优树,带权路径长度(WPL)最短的树
另:带权路径长度最短是在度相同的树中比较而得得结果因此有最优二叉树,最优三叉树之称等等。
哈夫曼树:最优二叉树,带权路径长度(WPL)最短的二叉树
满二叉树不一定是哈夫曼树
哈夫曼树中权越大的叶子离根越近
具有相同带权结点的哈夫曼树不唯一