- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章树形结构
* * * * * * * * * * * * * * * * * * * * (其实是非前缀码) * (其实是非前缀码)哈夫曼树的应用最广泛的是在编码技术上,它能够容易地求出给定字符集及其概率分布的最优前缀码。(最优前缀码就是平均码长最小的前缀码) * 例2:哈夫曼树用于电文编码 要传输的电文是{CAS;CAT;SAT;AT} 要传输的字符集是 D={C,A,S,T, ;} 每个字符出现的频率是W={ 2,4, 2,3, 3 } 以带权字符为叶子结点建立哈夫曼树,得到各字符编码是 T ; A C S 00?????? 01 10 110 111 上述电文编码:11010111011101000011111000011000 其总长度为32,恰好等于哈夫曼树的带权路径长。可见哈夫曼编码是使电文具有最短长度的二进制编码。 * * * * * * * * * * * 由性质2可知,高度为h 的二叉树最多有2h-1个元素。因为n≤2h -1,因此h≥log2(n+1)。由于h 是整数,所以得证 * * * * * * * * * * * * * * * * * * (1)已知一棵二叉树的前序序列和中序序列分别为ABDGHCEFI和GDHBAECIF,请画出此二叉树。 已知二叉树的前序序列为ABDGHCEFI和中序序列GDHBAECIF,则可以根据前序序列找到根结点为A,由此,通过中序序列可知它的两棵子树包分别含有GDHB和ECIF结点,又由前序序列可知B和C分别为两棵子树的根结点...以此类推可画出所有结点: * * * * * * * * * * 哈夫曼树的构造算法 data Prnt Lchild Rchild struct Hnode //定义存放哈夫曼树所有结点的结构体数组 { int data; //存放结点权值 int Lchild; //左指针 int Rchild; //右指针 int Prnt; //双亲指针 } ; 存储结构:模拟指针表示法(数组型链表结构) data Prnt Lchild Rchild 1 2 3 4 5 6 7 总结点数=n0+n1+n2= n0+0+n0 -1=2n0 -1 哈夫曼树的构造算法 data Prnt Lchild Rchild 7 0 0 0 5 0 0 0 2 0 0 0 4 0 0 0 0 0 0 1 2 3 4 5 6 7 k n 6 3 4 i j 5 5 for(k = n+1; k = 2*n-1; k++) {Select(hTree ,k-1,i,j); //从data中选出双亲为0的两个权值最小的下标i,j hTree[k].data = hTree[i].data + hTree[j].data; hTree[k].Lchild = i; hTree[k].Rchild = j; hTree[i].Prnt = k; hTree[j].Prnt = k; } 哈夫曼树的构造算法 data Prnt Lchild Rchild 7 0 0 0 5 0 0 0 2 5 0 0 4 5 0 0 6 0 3 4 0 0 1 2 3 4 5 6 7 k n i j k i j 11 2 5 6 6 for(k = n+1; k = 2*n-1; k++) {Select(hTree ,k-1,i,j); //从data中选出双亲为0的两个权值最小的下标i,j hTree[k].data = hTree[i].data + hTree[j].data; hTree[k].Lchild = i; hTree[k].Rchild = j; hTree[i].Prnt = k; hTree[j].Prnt = k; } 哈夫曼树的构造算法 data Prnt Lchild Rchild 7 0 0 0 5 6 0 0 2 5 0 0 4 5 0 0 6 6 3 4 11 0 2 5 0 1 2 3 4 5 6 7 n i k i j k j 18 1 6 7 7 for(k = n+1; k = 2*n-1; k++) {Select(hTree ,k-1,i,j); //从data中选出双亲为0的两个权值最小的下标i,j hTree[k].data = hTree[i].data + hTree[j].data; hTree[k].Lchild = i; hTree[k].Rchild = j;
您可能关注的文档
最近下载
- 高中数学《集合的概念及其基本运算》导学教案.doc VIP
- 人教版八年级下英语单词默写表格(整理打印).pdf VIP
- 九年级下册数学《二次函数》二次函数的性质.doc VIP
- 第一批产学合作协同育人项目简介.doc VIP
- 女性生育力保存PPT课件.pptx VIP
- STEAM跨学科课程整合的理念、模式构建与实施挑战研究.docx VIP
- 产学合作协同育人创新创业教育改革项目申报书模板(包含内容).docx VIP
- 110千伏输电线路工程专业监理实施细则.doc VIP
- 智慧乡村、智慧农业产供销一体化、可追溯平台建设方案.pdf VIP
- 产学合作协同育人教学内容和课程体系改革项目申报书模板—基于计算思维的大学计算机课程思政案例构建与实践(包含申报书内容、合作方案、合作协议).docx
文档评论(0)