版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章树与二叉树(三树与二叉树C(精品)第6章树与二叉树(三本章的基本内容是61树及其抽象数据类型62二叉树及其抽象数据类型63二叉树的表示和实现64线索化二叉树6.5树、森林与二叉树的转换6.6哈夫曼编码与哈夫曼树构造二叉树建立一棵二查树必须明确以下两点(1)结点与父母结点以及孩子结点之间的层次关系(2)兄弟结点间的左右子树的次序关系能够唯一确定一棵二查树的表示(1)先根和中根序列表示(2)标明空子树的先根序列表示第6章树与二叉树C(精品)第6章1本章的基本内容是61树及其抽象数据类型62二叉树及其抽象数据类型63二叉树的表示和实现64线索化二叉树6.5树、森林与二叉树的转换6.6哈夫曼编码与哈夫曼树本章的基本内容是2构造二叉树建立一棵二查树必须明确以下两点(1)结点与父母结点以及孩子结点之间的层次关系(2)兄弟结点间的左右子树的次序关系能够唯一确定一棵二查树的表示(1)先根和中根序列表示(2)标明空子树的先根序列表示构造二叉树31)先根和中根序列表示ii+先根序列BIDIGCEIFIHpreorder左子树右子树根左子树右子树n-1中根序列|DGB|A左子树根右子树(a)先根与中根次序遍历序列(b)确定根、左子树、右子树1)先根和中根序列表示4在BinaryTree类中增加以下构造方法publicBinaryTree(Tlprelist,Tlinlist)Ithisroot=create(prelist,inlist,0,0,prelistlength);privateBinaryNodecreate(TDprelist,T[inlist,intpreStart,intinStart,intnif(n<=0)returnnul;Telem=prelist[preStart];BinaryNode<T>p=newBinaryNode<T>(elem);inti=Owhile(i<n&&!elem.equals(inlist[inStart+))1++pleft=create(prelist,inlist,preStart+1,instart,i)pright=create(prelist,inlist,preStart+i+1,instart+i+1,n-1-1)returnp在BinaryTree类中增加以下构造方法5(2)标明空子树的先根序列表示(a)AB(b)AB(c)AB..c(d)ABd.g.ce.FH(2)标明空子树的先根序列表示6在BinaryTree类中增加以下构造方法publicBinaryTree(T[prelist)Ithisroot=creatprelist);1privateinti=OprivateBinarynode<T>create(TIprelist)(BinaryNode<T>p=null;(i<prelistlength[Telem=prelist[]+if(elem!=nullip=newBinaryNode<t>(elem);pleft=create(prelistpright=create(prelist)returnp在BinaryTree类中增加以下构造方法7如何获得结点在一种遍历序列中的前驱或后继?leftdataright∧H人(a)一棵二叉树(b)二叉链表如何获得结点在一种遍历序列中的前驱或864线索化二叉树(ThreadedBinarytree)用二叉链表法(Child,rchild)存储包含n个结点的二叉树,结点的指针区域中会有多少个空指针?分析:用二叉链表存储包含n个结点的二叉树,结点必有2n个链域除根结点外,二又树中每一个结点有且仅有一个双亲(直接前驱),所以只会有n-1个结点的链域存放指针,指向非空子女结点所以,空指针数目=2n-(n-1)=n+1个64线索化二叉树(ThreadedBinarytree9②二叉链表空间效率这么低,能否利用这些空闲区存放有用的信息或线索?可以用它来存放当前结点的直接前驱和后继等线索,以加快查找速度问题的提出:普通二叉树只能找到结点的左右孩子信息,而该结点的直接前驱和直接后继只能在遍历过程中获得若将遍历后对应的有关前驱和后继预存起来,则从第一个结点开始就能很快“顺藤摸瓜”而遍历整个树可能是根、或最左(右)叶子②二叉链表空间效率这么低,能否利用这些空闲区10树与二叉树C课件11树与二叉树C课件12树与二叉树C课件13树与二叉树C课件14树与二叉树C课件15树与二叉树C课件16树与二叉树C课件17树与二叉树C课件18树与二叉树C课件19树与二叉树C课件20树与二叉树C课件21树与二叉树C课件22树与二叉树C课件23树与二叉树C课件24树与二叉树C课件25树与二叉树C课件26树与二叉树C课件27树与二叉树C课件28树与二叉树C课件29树与二叉树C课件30树与二叉树C课件31树与二叉树C课件32树与二叉树C课件33树与二叉树C课件34树与二叉树C课件35树与二叉树C课件36树与二叉树C课件37树与二叉树C课件38树与二叉树C课件39树与二叉树C课件40树与二叉树C课件41树与二叉树C课件42树与二叉树C课件43树与二叉树C课件44树与二叉树C课件45树与二叉树C课件46树与二叉树C课件47树与二叉树C课件48树与二叉树C课件49树与二叉树C课件50树与二叉树C课件51树与二叉树C课件52第6章树与二叉树(三树与二叉树C(精品)第6章树与二叉树(三本章的基本内容是61树及其抽象数据类型62二叉树及其抽象数据类型63二叉树的表示和实现64线索化二叉树6.5树、森林与二叉树的转换6.6哈夫曼编码与哈夫曼树构造二叉树建立一棵二查树必须明确以下两点(1)结点与父母结点以及孩子结点之间的层次关系(2)兄弟结点间的左右子树的次序关系能够唯一确定一棵二查树的表示(1)先根和中根序列表示(2)标明空子树的先根序列表示第6章树与二叉树C(精品)第6章53本章的基本内容是61树及其抽象数据类型62二叉树及其抽象数据类型63二叉树的表示和实现64线索化二叉树6.5树、森林与二叉树的转换6.6哈夫曼编码与哈夫曼树本章的基本内容是54构造二叉树建立一棵二查树必须明确以下两点(1)结点与父母结点以及孩子结点之间的层次关系(2)兄弟结点间的左右子树的次序关系能够唯一确定一棵二查树的表示(1)先根和中根序列表示(2)标明空子树的先根序列表示构造二叉树551)先根和中根序列表示ii+先根序列BIDIGCEIFIHpreorder左子树右子树根左子树右子树n-1中根序列|DGB|A左子树根右子树(a)先根与中根次序遍历序列(b)确定根、左子树、右子树1)先根和中根序列表示56在BinaryTree类中增加以下构造方法publicBinaryTree(Tlprelist,Tlinlist)Ithisroot=create(prelist,inlist,0,0,prelistlength);privateBinaryNodecreate(TDprelist,T[inlist,intpreStart,intinStart,intnif(n<=0)returnnul;Telem=prelist[preStart];BinaryNode<T>p=newBinaryNode<T>(elem);inti=Owhile(i<n&&!elem.equals(inlist[inStart+))1++pleft=create(prelist,inlist,preStart+1,instart,i)pright=create(prelist,inlist,preStart+i+1,instart+i+1,n-1-1)returnp在BinaryTree类中增加以下构造方法57(2)标明空子树的先根序列表示(a)AB(b)AB(c)AB..c(d)ABd.g.ce.FH(2)标明空子树的先根序列表示58在BinaryTree类中增加以下构造方法publicBinaryTree(T[prelist)Ithisroot=creatprelist);1privateinti=OprivateBinarynode<T>create(TIprelist)(BinaryNode<T>p=null;(i<prelistlength[Telem=prelist[]+if(elem!=nullip=newBinaryNode<t>(elem);pleft=create(prelistpright=create(prelist)returnp在BinaryTree类中增加以下构造方法59如何获得结点在一种遍历序列中的前驱或后继?leftdataright∧H人(a)一棵二叉树(b)二叉链表如何获得结点在一种遍历序列中的前驱或6064线索化二叉树(ThreadedBinarytree)用二叉链表法(Child,rchild)存储包含n个结点的二叉树,结点的指针区域中会有多少个空指针?分析:用二叉链表存储包含n个结点的二叉树,结点必有2n个链域除根结点外,二又树中每一个结点有且仅有一个双亲(直接前驱),所以只会有n-1个结点的链域存放指针,指向非空子女结点所以,空指针数目=2n-(n-1)=n+1个64线索化二叉树(ThreadedBinarytree61②二叉链表空间效率这么低,能否利用这些空闲区存放有用的信息或线索?可以用它来存放当前结点的直接前驱和后继等线索,以加快查找速度问题的提出:普通二叉树只能找到结点的左右孩子信息,而该结点的直接前驱和直接后继只能在遍历过程中获得若将遍历后对应的有关前驱和后继预存起来,则从第一个结点开始就能很快“顺藤摸瓜”而遍历整个树可能是根、或最左(右)叶子②二叉链表空间效率这么低,能否利用这些空闲区62树与二叉树C课件63树与二叉树C课件64树与二叉树C课件65树与二叉树C课件66树与二叉树C课件67树与二叉树C课件68树与二叉树C课件69树与二叉树C课件70树与二叉树C课件71树与二叉树C课件72树与二叉树C课件73树与二叉树C课件74树与二叉树C课件75树与二叉树C课件76树与二叉树C课件77树与二叉树C课件78树与二叉树C课件79树与二叉树C课件80树与二叉树C课件81树与二叉树C课件82树与二叉树C课件83树与二叉
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026河南郑州市第九十九中学公益性岗位招聘13人备考题库有完整答案详解
- 2026湖南长沙岳麓区云西府幼儿园招聘备考题库及答案详解(网校专用)
- 2026浙江省地质院本级及所属部分事业单位招聘高层次人才12人备考题库附答案详解(综合题)
- 2026河南洛阳市西苑初级中学招聘备考题库及答案详解(易错题)
- 2026台州临海市市属国有企业招聘工作人员49人备考题库附答案详解(完整版)
- 2026山东省土地发展集团有限公司权属公司社会招聘41人备考题库(第一批)及一套答案详解
- 2026“才聚齐鲁 成就未来”山东黄河生态发展集团有限公司招聘10人备考题库附答案详解(黄金题型)
- 2026山东日照银行烟台分行社会招聘备考题库含答案详解(研优卷)
- 2026四川宜宾市消防救援局第一次招聘政府专职消防员147人备考题库及一套参考答案详解
- 成都市实验小学青华分校招聘储备教师备考题库含答案详解(预热题)
- 口腔门诊院感工作制度
- 2026河北邢台学院高层次人才引进55人备考题库(含答案详解)
- 青岛2026事业单位联考-综合应用能力A类综合管理模拟卷(含答案)
- 2026年医学伦理学期末试题及参考答案详解【培优A卷】
- 6.3 简单的小数加、减法 课件2025-2026学年人教版数学三年级下册
- 2026黑龙江省水利投资集团有限公司建投集团系统内部招聘5人笔试参考题库及答案解析
- 【试卷】河北唐山市2026届高三年级一模考试语文试题
- 消渴(2型糖尿病性周围神经病)中医临床路径及入院标准2020版
- 安全监管平台建设方案
- 5第五章 体育活动与心理健康
- 急诊科危重病人的识别与处理8.28
评论
0/150
提交评论