W P L = ∑ i = 0 n w i l i WPL=\sum_{i=0}^{n} w_i l_i WPL=i=0∑nwili
叶节点个数相同,但是树的带权路径长度不一定相同!
定义:最优二叉树,含有 n n n个带权叶子结点带权路径长度最小的二叉树
对于一个字符串序列,用二进制来表示字符。
**固定长度编码:**每一个字符对应的二进制长度相同
HelloWorld
000001010010011100011101010110
000——H;001——e;010——l ;011——o
100——W;101——r;110——d
**可变长度编码:**每一个字符对应二进制长度可变
HelloWorld
0001001101110000
ll/H
00——H;01——e;0——l;1——o;
10——W;11——r;000——d;
**前缀编码:**没有一个编码是另一个编码的前缀
HelloWorld
000001111101110001110111010
000——H;001——e;11——l;011——o;
100——W;101——r;010——d;
出现次数:
A:2;B:3;C:6;D:9;E:10
利用哈夫曼树的构造过程,将所有的边赋予左边的边 0 0 0、右边的边 1 1 1:A——110;B——111;C——10;D——00;E——01
出现次数越多的结点越靠近根结点,因此编码更短;反之越远离根结点,编码长度越长。
哈夫曼树并不唯一,所以每个字符对应的哈夫曼编码也不唯一(左右子树可以交换),但带权路径长度相同且最优