数据构造试验汇报1.试验规定运用二叉树构造实现哈夫曼编/解码器
基本规定:1、初始化(Init):可以对输入的任意长度的字符串s进行记录,记录每个字符的频度,并建立哈夫曼树2、建立编码表(CreateTable):运用已经建好的哈夫曼树进行编码,并将每个字符的编码输出
3、编码(Encoding):根据编码表对输入的字符串进行编码,并将编码后的字符串输出
4、译码(Decoding):运用已经建好的哈夫曼树对编码后的字符串进行译码,并输出译码成果
5、打印(Print):以直观的方式打印哈夫曼树(选作)计算输入的字符串编码前和编码后的长度,并进行分析,讨论哈夫曼编码的压缩效果
并用IlovedataStructure,IloveComputer
IwilltrymybesttostudydataStructure
程序分析哈夫曼树结点的存储构造包括双亲域parent,左子树lchild,右子树rchild,尚有字符word,权重weight,编码code对顾客输入的信息进行记录,将每个字符作为哈夫曼树的叶子结点
记录每个字符出现的次数作为叶子的权重,记录次数可以根据每个字符不一样的ASCII码,根据叶子结点的权重建立一种哈夫曼树
建立每个叶子的编码从根结点开始,规定通往左子树途径记为0,通往右子树途径记为1
由于编码规定从根结点开始,因此需要前序遍历哈夫曼树,故编码过程是此前序遍历二叉树为基础的
同步注意递归函数中能否直接对结点的编码域进行操作
编码信息只要遍历字符串中每个字符,从哈夫曼树中找到对应的叶子结点,获得对应的编码
最终再将所有找到的编码连接起来即可
译码则是将编码串从左到右逐位鉴别,直到确定一种字符
这就是哈夫曼树的逆过程
遍历编码串,从哈夫曼树中找到对应的叶子结点,获得对应的字符再将找到的字符连接起来即可
1存储构造哈夫曼树结点存储构造2