第十一章:树结构应用之哈夫曼编码解码

 我来答
青柠姑娘17
2022-06-15 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6098
采纳率:100%
帮助的人:32.5万
展开全部
给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。

编码:
1.输入字符串,通过getWeight()获取其权重即每个字符出现的次数并利用权重及字符生成Node结点,组成sourceData列表。
2.调用makeHuffman()方法,通过getmin2()函数可获得最小权重的两个字符,再让其形成父亲结点,并赋予左子结点右子结点,遍历sourceData完生成huffman结点,即哈夫曼树的根结点。
3.调用traverse()方法,将以huffman为根结点的树遍历形成列表。
4.调用strToHuffmanCode()方法,会去调用getCode()方法,会去根据huffman形成路径表route2,再跟原字符串一个一个字符进行比对,找到就添加其路径最终生成huffmancode
5.获取二进制表示的哈夫曼编码后,调用huffmanCodeBytes函数可以将二进制树转为带符号的十进制树,以八位二进制数为一组例如11010110,第一位为符号位,1表示负转为十进制数应将其余位取反并加1,再转为十进制数再*-1,就可以得到最终的十进制数。
解码:
调用decimalToBinary()函数将带符号的十进制数转为二进制数,再调用byteToBitString()比对route路径表 得到字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式