哈夫曼树是一种用于数据压缩的最优二叉树,依据字符频率构建;哈夫曼编码基于该树实现前缀编码,减少数据存储或传输空间。
问题描述:已知n个字符在原文中的出现频率,要求计算它们的哈夫曼编码。
基本要求:
1. 初始化:从键盘读入n个字符及其权值,并建立Huffman树。(具体算法可参考教材P147的算法6.12)
2. 编码:根据已建好的Huffman树求出每个字符的哈夫曼编码。对给定的待编码字符序列进行编码。
选作内容:
1. 译码:利用已经建立好的Huffman树,对上面得到的编码结果进行解码。具体过程是从根节点出发,按字符串中的0和1确定向左或向右寻找子节点直至叶结点来获取对应的字符。
2. 打印 Huffman树。
测试数据:可以使用教材P.148例6-2的数据调试程序,假设符号为A,B,C,D,E,F,G,H。编/译码序列为 CFBABBFHGH(也可以自行设定其他数据进行测试)。