ImageVerifierCode 换一换
格式:PPT , 页数:38 ,大小:292.50KB ,
资源ID:13454043      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/13454043.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(二叉树的应用.ppt)为本站上传会员【pc****0】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

二叉树的应用.ppt

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,二叉树的应用,1,、二叉排序树(二叉查找树),2,、最优二叉树(哈夫曼树),请写出上图二叉树的中序遍历序列。,1,二叉排序树,1.1,二叉排序树的定义,二叉排序树,(Binary Sort Tree),又称二叉查找,(,搜索,),树,(Binary Search Tree),。其定义为:二叉排序树或者是空树,或者是满足如下性质的二叉树:,若它的左子树非空,则左子树上所有结点的值,均小于根结点的值;,若它的右子树非空,则右子树上所有结点的值,均大于根结点的值;,左、右子树本身又各是一棵二叉排序树。上述性质简称

2、二叉排序树性质,(BST,性质,),,故二叉排序树实际上是满足,BST,性质的二叉树。,1,二叉排序树,1.2,二叉排序树的特点,(,1,)二叉排序树中任一结点,x,,其左,(,右,),子树中任一结点,y(,若存在,),的关键字必小,(,大,),于,x,的关键字。(,2,)二叉排序树中,各结点关键字是惟一的。,注意,:实际应用中,不能保证被查找的数据集中,各元素的关键字互不相同,所以可将二叉排序树,定义中,BST,性质,(1),里的,“,小于,”,改为,“,大于等于,”,,或,将,BST,性质,(2),里的,大于,改为,小于等于,,甚至可同时修改这两个性质。(,3,)按中序遍历该树所得到的中序

3、序列是一个递增有序序列。,1,二叉排序树,1.2,二叉排序树的特点,例,1.1 (1),输入序列,:5,,,7,,,3,,,4,,,2,,,8,构造,排序,二叉树,写出中序遍历序列;,(2),输入序列,:2,,,3,,,7,,,5,,,8,,,4,构造,排序,二叉树,写出中序遍历序列。,二叉排序树的构造,1,二叉排序树,1.2,二叉排序树的特点,二叉排序树的示例,输入序列决定了二叉排序树的形态。,1,二叉排序树,1.3,二叉排序树的生成,由输入实例,(5,,,3,,,7,,,2,,,4,,,8),,根据生成二叉排序树算法生成二叉排序树的过程。,动画演示,1,二叉排序树,1.3,二叉排序树的生成

4、如图所示的二叉排序树,中序遍历结果为:,5,,,6,,,8,,,9,,,10,,,11,,,13,,,14,,,15,,,17,。,如何生成这样一棵二叉树呢?,例,1.2,编程输入一组不同的整数(约定大于等于,0,,输入负数表示结束),用二叉排序树排序后按从小到大输出。,问题分析,图,1,先生成一个结点,再根据大小决定这个结点是插在左子树上还是右子树上,如此重复直到输入一个负数。,1,二叉排序树,1.3,二叉排序树的生成,例,1.2,编程输入一组不同的整数,用二叉排序树排序后按从小到大输出。,参考程序,Program p 1_2(Input,Output),;,Type tree=node,

5、node=Record,data:Integer,;,lchild,rchild:tree,;,End,;,Var,bt:tree,;,n:Integer,;,1,二叉排序树,1.3,二叉排序树的生成,例,1.2,编程输入一组不同的整数,用二叉排序树排序后按从小到大输出。,Procedure,creat_order_tree(Var,btx:tree,;,nx:Integer,),;,排序二叉树的插入,Var,p,s,f:tree,;,flag:Boolean,;,标识要插入的数是否在树中出现过,防止同一个数重复出现在树中,Begin,New(s,),;,s.data,:=,nx,;,s.

6、lchild,:=Nil,;,s.rchild,:=Nil,;,新建一个结点,s flag:=True,;,假设没出现过,p:=,btx,;,P,指向根结点,While(pNil)And flag Do ,为结点,S,找插入位置、同时判断是否出现过,1,二叉排序树,1.3,二叉排序树的生成,例,1.2,编程输入一组不同的整数,用二叉排序树排序后按从小到大输出。,Begin f:=p,;,If,s.data,=,p.data,Then flag:=False ,出现过做标记,Else If,s.data,p.data,Then p:=,p.lchild,沿左子树方向找,Else p:=,p.rc

7、hild,;,沿由子树方向找,End,;,If flag Then Begin ,没出现过、且,p=Nil,说明已找到叶 结点了,那么插入到叶结点的左右孩子中,If,btx,=Nil Then,btx,:=s,;,作为根结点,If,s.data,f.data,Then,f.rchild,:=s,;,右孩子,End,;,End,;,1,二叉排序树,1.3,二叉排序树的生成,例,1.2,编程输入一组不同的整数,用二叉排序树排序后按从小到大输出。,Procedure,inorder_print(btx:tree,),;,递归中序输出,BeginIf,btx,Nil Then Begin,inorde

8、r_print(btx.lchild,),;,从小到大输出,如果要求从大到小,,Write(btx.data,),;只要先右再左就可以了,inorder_print(btx.rchild,),;,End,;,End,;,1,二叉排序树,1.3,二叉排序树的生成,例,1.2,编程输入一组不同的整数,用二叉排序树排序后按从小到大输出。,Begin ,主程序,bt,:=Nil,;,根结点初始化,不指向任何结点,Writeln(input,data(if,=0 Then,creat_order_tree(bt,n,),;,Until n0,;,Write(output,sorted data:),;,

9、inorder_print(bt,),;,Writeln,;,End.,1,二叉排序树,1.4,二叉排序树的删除,二叉排序树的删除与普通树及一般二叉树的删除有所不同,因为它要保证所有结点按中序遍历后仍然有序输出,所以,删除二叉树,bt,中一个数据域为,x,的结点的过程如下:,1,首先查找到数据域为,X,的结点,P,;,2,若结点,P,没有左子树,则用右子树的根代替被删除的结点;,3,若结点,P,有左子树,则在其左子树中找到最右结点,R,,将,P,的右子树置为,R,的右子树,再将,P,的左子树的根结点代替被删除的结点,P,。,如图,1,中,删除数据域为,10,的结点变成图,2,左边的,A,图,删

10、除数据,1,二叉排序树,1.4,二叉排序树的删除,Procedure,delnodex(Var,bt:tree,;,x:Integer,),;,Var,p,q,r,t:tree,;,Begin,p:=,bt,;,q:=Nil,;,While(pNil)And(,q.data,x)Do,If(x=2 Do Begin,insert(a,i,),;对,a,的前,i,个元素按,data,域进行排序,ft.data,:=a1.data+a2.data,;生成新的二叉树,ft.lchild,:=a1.addr,;,ft.rchild,:=a2.addr,;,a1.data:=,ft.data,;修改森林

11、a1.addr:=t,;,a2.data:=,ai.data,;修改森林,a2.addr:=,ai.add,;,i:=i-1,;二叉树数目减一,t:=t+1,;,End,;,End,;,2,最优二叉树,2.2,应用实例,哈夫曼编码,利用,哈夫曼树构造的二进制编码为哈夫曼编码。,也称为二进制前缀编码。,哈夫曼,(Huffman),编码利用码字出现的频率差异而设计的长度不等的编码。频率高的字母码长较短一些,而频率低的字母码长一些,是数字压缩大最低程度。,编码规则:,对哈夫曼树,根结点的编码为空,从根结点开始,每个结点的左孩子的编码是其父结点的编码后添加,0,,而右孩子的编码是其父结点的编码后添加

12、1,。,2,最优二叉树,2.2,应用实例,哈夫曼编码,例,2.2,如图是,5,个叶子结点的二叉树,每一结点对应一个码字(,00,,,01,,,10,,,110,,,111,)。,编码后添加,1,。,0,1,0,1 0 1,00 01 10 ,000 111,例,2.3,已知一个文件中仅有,8,个不同的字符,各字符出现的个数分别是,3,、,4,、,8,、,10,、,16,、,18,、,20,、,21,。试重新为各字符编码,以节省存储空间。,2,最优二叉树,2.2,应用实例,哈夫曼编码,(,1,)以频率为权值构造哈夫曼树。,(,2,)进行哈夫曼编码。,100,59,41,25,34,15,10,

13、8,7,4,3,18,16,21,20,1,0,00,01,000,0000,00000,00001,0001,001,010,011,10,11,文件长度为,WPL,值,即:,(3,4)5,84,(10,16,18)3,(20,21)2,281,1,、铲雪车,2,、单词查找树,3,、合并果子,练习,练习,1,:铲雪车问题,问题描述,大雪履盖了整个城市,市政府要求冬季服务部门尽快将一些街道(列在一份清单中)的积雪清除掉以恢复交通,整个城市由许多交叉路口和街道构成,当然任意两个交叉路口都是直接或间接连通的,清单给出了最少的街道,使得这些街道的积雪清除后任意两个交叉路口之间有且仅有一条通路,冬季服

14、务部门只有一辆铲雪车及一名司机,这辆铲雪车的出发点位于某个交叉路口。,无论街道上有没有积雪,铲雪车每前进一米都要消耗一升燃料,冬季服务部门要求司机在铲除清单上的所有街道的积雪的前提下,要求消耗燃料最少,积雪铲完后车可以停在任意的交叉路口。,输入格式,输入文件名为,one.in,,第一行包含两个整数,N,和,S,,,1N100000,,,1SN,。,N,为交叉路口的总数;,S,为铲雪车出发的路口序号。路口的标号为,1N,。,接下来的,N-1,行为清单上的街道,每一行包含三个用空格隔开的整数,A,、,B,、,C,,表示一条从交叉路口,A,到交叉路口,B,的街道,,C,为该街道的长度,单位为米,,1

15、C1000,。,输出格式,输出文件名为,one.out,,仅一行包含一个整数表示清除所有积雪所需的最少的燃料数量。,样例输入,5 1,1 2 8,1 3 10,3 4 10,4 5 7,样例输出,43,问题分析,在树的基本概念中,我们知道“一棵树中的任意两个不同结点之间一定存在着一条唯一的路径,不论是直接的或间接的。图论意义上的路径概念”。在本题中,我们把每个路口作为一个结点的话,则整个街道就是一棵树,而且铲雪车出发点正好就是树根,而题目中“任意两个交叉路口之间有且仅有一条通路”这个条件正好符合上述概念。所以本题就变成了一个树的遍历问题,只不过是一个“加权树,权为街道的长度、也即清除本街道积雪

16、所需要的燃料数量”,而且满足“每条边至少被访问一次”和“权的和最小”。对于上述的样例,我们可以画出如图,6_20,所示的树型结构,现在的问题就转变成“求遍历整棵树中的所有结点的权值之和的最小值”,这个问题结果等价于,total*2-maxt,,其中,total=,整棵树的权值之和;,maxt,=,根结点深度遍历到每个叶结点的权值之和的最大值”,如样例中,total=8+10+10+7=35,,,maxt,=max8,10+10+7=27,,所以结果为,35*2-27=43,。,数据结构方面:因为本题的树型结构是多叉树,而且结点数目巨大,存储和操作起来都很麻烦,所以我们把它转换成二叉树的形式。而且处理时没有用邻接矩阵的方法,而是转换成类似于稀疏矩阵的存储方法,。,

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服