树之哈夫曼(Huffman)树

1. 概念

   实际生活中,树中结点常常表示某种意义的数值,称为该结点的权值。从根结点到任意结点的路径长度(经过的边数)与该结点上权值的乘积称为该结点的带权路径长度。树中所有叶结点的带权路径长度之和称为该树的带权路径长度,记为
     WPL = Wi*Li(i=1,2……,n)
带权路径长度(WPL)最小的二叉树称为哈夫曼树,也称最优二叉树。

2. 哈夫曼树的构造

用个实例说明一下。A(5),B(24),C(7),D(17),E(34),F(5),G(13)
树之哈夫曼(Huffman)树
取结点集合里,权值最小的2个数,构成二叉树。再合并值加入集合。重复上述步骤,直至结点集合中的结点消耗光。

3. 哈夫曼编码

   上面使用编码表示字符串序列,可以对数据进行极大的压缩,利用哈夫曼树可以设计出总长度最短的二进制的前缀编码。