- 1、本文档共68页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 树的应用 核心算法 1、新元素与树根结点比较。 2、如果比根小,则取根的左子树,回到1;如果根无左子树,则将新结点插入在根结点左孩子处 3、如果比根大,取根的右子树,回到1;如果根无右子树,则将新结点插入在根结点右孩子处 设p指向树根; if(new_node-data p-data){ p = p-Lchild;} if(p-Lchild == NULL) p-Lchild = new_node; break;} { while( p != NULL){ } 2 20 6 15 树的应用 例:哈夫曼树 最优二叉树 最小费用树 什么是哈夫曼树、怎样建立、有什么用? 哈夫曼树是最优二叉树 最优? 路径带权总长最小 路径?从树根到节点经历的分支序列,路径长度是分支数目 总长?从根到所有节点的路径长度之和 带权?(仅)叶节点带有权值 带权路径长度:路径长度×权值 树的带权路径长度:所有带权路径长度之和 树的应用 5 7 2 4 5 7 2 4 5 7 2 4 带权路径长: 5×2+7×2+2×2+4×2= 36 5×2+7×3+4×3+2×1= 46 2×3+4×3+5×2+7×1= 35 哈夫曼树 树的应用 哈夫曼树的建立 1)带有权值的节点分别构成独立的树 2)每次选择两个最小权值的根的树 3)生成一个新的根将选出的树挂在下面,分别为左右子树 新的根的权值为两个子树的权值之和 4)反复进行直到所有的节点都挂到一颗树上 5 7 2 4 6 5 7 2 4 11 (a) (b) 5 7 2 4 证明:按这个过程建立的二叉树是最优二叉树(略) (c) 树的应用 哈夫曼树的应用:压缩编码 设通信中只出现A、B、C、D四个字符,通信总量为n 如果每个字符使用两位二进制编码,则数据量为2n 如果利用字符出现次数作为节点权值,建立哈夫曼树,并利用其编码,可获得较少的编码数据量 5 117 2 4 0 1 1 1 0 0 规定:在二叉树上向左使用0编码,向右使用1编码 假设,A出现117次,B出现2次, C出现4次,D出现5次 根据哈夫曼树 A使用0编码 B用110 C用111 D用10 总编码长117×1+5×2+4×3+2×3 = 145位 否则,要使用256位! 作业 教材第66页,第18、19、20、21、22题 * * * * * * * * * * * * * * * * * * * * * * * * * * 算法框架 “遍历” while( ! end_of(tree)){ ...... } 中根访问与堆栈 while( ! end_of(tree)){ if( p != NULL ){ push(stack , p) p = p-Lchild; } else{ p = pop(stack); process(p); p = p-Rchild; }} p指针指向即将访问的子树 A B C D E F G H I J K L M N O P Q A p B C F G E NULL NULL NULL 中根访问与堆栈 while( ! end_of(tree)){ if( p != NULL ){ push(stack , p) p = p-Lchild; } else{ p = pop(stack); process(p); p = p-Rchild;} } end_of(tree)的实现 empty(stack) A B C D E F G H I J K L M N O P Q A P指针 “假入栈”:先放一个 假节点在栈里 当最后一个节点K出栈时 会连续两次出栈,获得栈空的满足 K ^_^ NULL NULL 算法框架 while( ! empty(tree)){ if( p != NULL ){ push(stack , p) p = p-Lchild; } else{ p = pop(stack); process(p); p = p-Rchild; }} A B C D E F G H I J K L M N O P Q A P指针 K NULL 观察A出栈时和K出栈时 的P指针情况,可利用 A出栈后 p = k; 且栈为空 K出栈后 p = NULL 且栈为空 P != NULL || !empty(stack) end_of(tree)的实现 算法框架 中根访问与堆栈 void inorder( tree)
您可能关注的文档
- flash动画制作教程.ppt
- 人解图集.doc
- 10小时学C 语言.doc
- 2008考研英语核心词汇速成胜经.doc
- 现代通信原理.pdf
- AutoCAD_经验与技巧.doc
- 3G技术普及手册(华为内部版)v1.00 040810.doc
- 《谈判的艺术》.ppt
- 51单片机教程.doc
- C++课件chap1 引论.ppt
- 人教部编版小学一年级上册《形近字组词专项练习》.docx
- 智慧中药房项目需求.docx
- 人教部编版小学五年级上册《形近字组词专项练习》.docx
- 小学三年级上数学必考14种数学思维题合集(拓展必备)(含答案).docx
- GM_T 0034基于SM2算法证书认证系统密码安全规范测试卷.docx
- 福建省厦门市2024-2025学年高二下学期期末质量检测英语试题(含答案).docx
- 专题01 邀请信+求助信+投诉信(测试)(解析版)-2025年高考英语二轮复习.pdf
- 福建省厦门市2024-2025学年高二下学期期末质量检测生物试卷.docx
- 专题01 邀请信+求助信+投诉信(讲义)(原卷版)-2025年高考英语二轮复习.pdf
- 福建省厦门市2024-2025学年高二下学期期末质量检测地理含答案.pdf
文档评论(0)