一、霍夫曼编码
说到霍夫曼树,就不得不提霍夫曼编码(Huffman Coding)。霍夫曼编码是可变字长编码(VLC)的一种。David.A.Huffman于1952年提出该编码方法,即完全依据字符出现概率来构造异字头的平均长度最短的码字,亦称之为最佳编码。
在数据通信中,需要将传送的文字转换成二进制的字符串,用0,1码的不同排列来表示字符。例如,需传送的报文为“AFTER DATA EAR ARE ART AREA”,这里用到的字符集为“A,E,R,T,F,D”,各字母出现的次数为{8,4,5,3,1,1}。现要求为这些字母设计编码。要区别6个字母,最简单的二进制编码方式是等长编码,固定采用3位二进制,可分别用000、001、010、011、100、101对“A,E,R,T,F,D”进行编码发送,当对方接收报文时再按照三位一分进行译码。显然编码的长度取决报文中不同字符的个数。若报文中可能出现26个不同字符,则固定编码长度为5。然而,传送报文时总是希望总长度尽可能短。
在实际应用中,各个字符的出现频度或使用次数是不相同的,如A、B、C的使用频率远远高于X、Y、Z,自然会想到设计编码时,如果能让出现频率高的字符的编码长度减少,频率低的字符编码长度 长于 频率高的。这样整个信息的编码长度会减少,并且能区分出不同的字符。
为了实现这种更高效的编码方式,就需要利用一个二叉树的结构来进行辅助编码,这种二叉树即为霍夫曼树,也称作最优二叉树。来实现一个字符的编码不是另一个字符编码的前缀。
二、霍夫曼树的定义与算法描述
在说明霍夫曼树之前,需要介绍几个术语。
所谓赫夫曼树,就是带权路径长度之和WPL最小的那个二叉树。(因此也叫作最优二叉树)
例如
三、霍夫曼编码的实现
http://blog.csdn.net/feynman1999/article/details/71178357