Huffman编码(Huffman树)
【0】README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 “Huffman编码(Huffman树)” 的idea 并用源代码加以实现; 0.2) Huffman树的构建算法属于 贪婪算法 , 贪婪算法的基础知识参见: http://blog.csdn.net/pacosonswjtu/article/details/50071159 【1】Huffman 编码 1.1)贪婪算法的第二个应用: 文件压缩; 1.1.1)标准的 ASCII字符集: 它由大约100个 可打印字符组成,为了把这些字符区分开, 需要 |log100|(不小于等于log100) = 7个 比特; 1.1.2)看个荔枝:(使用一个标准编码方案) 设一个文件, 它只包含字符 a, e, i, s, t, 加上一些空格和 newline(换行)。 进一步设该文件有10个a、15个e、12个i、3个s、4个t、13个空格以及一个 newline, 如图10-8所示, 这个文件需要174个bits 来表示,因为有58个字符,每个字符3个bits; 1.2)现实中的事实: 文件可能相当大。 许多大文件是某个程序的输出数据,而在使用频率最大和最小之间的字符间通常存在很大的差别; 1.2.1)出现的问题: 是否有可能提供一种更好的编码降低总的所需bits数量 2.2)解决方法: