- 1、本文档共89页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第5章树和二叉树;教学目标;5.1树和二叉树的定义;树〔Tree〕是n〔n≥0〕个结点的有限集,它或为空树〔n?=?0〕;或为非空树,对于非空树T:
〔1〕有且仅有一个称之为根的结点;
〔2〕除根结点以外的其余结点可分为m〔m>0〕个互不相交的有限集T1,T2,…,Tm,其中每一个集合本身又是一棵树,并且称为根的子树〔SubTree〕。;5;6;树的根本术语;双亲(parent):即上层的那个结点(直接前驱)
孩子(child):即下层结点的子树的根(直接后继)
兄弟:同一双亲下的同层结点〔孩子之间互称兄弟〕
堂兄弟:即双亲位于同一层的结点〔但并非同一双亲〕
祖先:即从根到该结点所经分支的所有结点
子孙:即该结点下层子树中的任一结点;结点的层次:从根到该结点的层数〔根结点算第一层〕
树的深度(或高度):指所有结点中最大的层数
有序树:结点各子树从左至右有序,不能互换〔左为第一〕
无序树:结点各子树可互换位置。
森林:指m棵不相交的树的集合(例如删除A后的子树个数);二叉树的定义;二叉树根本特点:
结点的度小于等于2
有序树〔子树有序,不能颠倒〕;具有3个结点的二叉树可能有几种不同形态?普通树呢?
;为何要重点研究每结点最多只有两个“叉”的树?
二叉树的结构最简单,规律性最强;
可以证明,所有树都能转为唯一对应的二叉树,不失一般性;5.2案例引入;案例5.2:利用二叉树求解表达式的值
以二叉树表示表达式的递归定义如下:
〔1〕假设表达式为数或简单变量,那么相应二叉树中仅有一个根结点,其数据域存放该表达式信息;
〔2〕假设表达式为“第一操作数运算符第二操作数”的形式,那么相应的二叉树中以左子树表示第一操作数,右子树表示第二操作数,根结点的数据域存放运算符〔假设为一元运算符,那么左子树为空〕,其中,操作数本身又为表达式。;5.3树和二叉树的抽象数据类型定义;CreateBiTree(T,definition)
初始条件;definition给出二叉树T的定义。
操作结果:按definition构造二叉树T。
PreOrderTraverse(T)
初始条件:二叉树T存在。
操作结果:先序遍历T,对每个结点访问一次。
InOrderTraverse(T)
初始条件:二叉树T存在。
操??结果:中序遍历T,对每个结点访问一次。
PostOrderTraverse(T)
初始条件:二叉树T存在。
操作结果:后序遍历T,对每个结点访问一次。
;5.4二叉树的性质和存储结构;19;20;21;22;性质5:对完全二叉树,假设从上至下、从左至右编号,那么编号为i的结点,其左孩子编号必为2i(2i≤n),其右孩子编号必为2i+1(2i+1≤n);其双亲的编号必为i/2。;二叉树的存储结构;1.二叉树的顺序存储结构;26;2.二叉树的链式存储结构;二叉链表;三叉链表;5.5遍历二叉树和线索二叉树;遍历二叉树;32;33;34;35;36;37;38;先序遍历算法;40;中序遍历算法;后序遍历算法;遍历算法的分析;44;2.根据遍历序列确定二叉树;例5.1一棵二叉树的中序序列和后序序列分别是BDCEAFHG和DECBHGFA,请画出这棵二叉树。
①由后序遍历特征,根结点必在后序序列尾部〔A〕;
②由中序遍历特征,根结点必在其中间,而且其左部必全部是左子树子孙〔BDCE〕,其右部必全部是右子树子孙〔FHG〕;
③继而,根据后序中的DECB子树可确定B为A的左孩子,根据HGF子串可确定F为A的右孩子;以此类推。;47;3.二叉树遍历算法的应用;(1)创立二叉树的存储结构—二叉链表
设二叉树中结点的元素为单字符。
按先序遍历的顺序建立二叉链表,T为指向根结点的指针,对于给定的一个字符序列,依次读入字符,从根结点开始,递归创立二叉树。
【算法步骤】
①读入字符ch
②如果ch是“#”,那么为空树;否那么执行:
申请一个结点空间T
将ch赋给T-data
递归创立T的左子树
递归创立T的右子树;voidCreateBiTree(BiTreeT〕
{ //先序创立二叉链表表示的二叉树T
cinch;
if(ch==’#’)T=NULL; //递归结束,建空树
Else
{
T=newBiTNode;T->data=ch; //生成根结点
CreateBiTree(T->lchild);//递归创立左子树
CreateBiTree(T->rchild);//递归创立右子树
您可能关注的文档
- 金地集团保修服务作业指引.doc
- 有线电视网双向化改造(陈柏年).ppt
- 景观生态学之景观分类与评价.ppt
- 有趣的图形动手做(一).ppt
- 新闻自由与腐败.ppt
- 新概念第一册第1-2课.ppt
- 最小公倍数-课件.ppt
- 新老店长如何处理的10种问题.ppt
- 重点专业建设任务书-财务管理.doc
- 数据库连接池简介.pptx
- 某县纪委监委开展“校园餐”突出问题专项整治工作汇报22.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告66.docx
- 某县委常委、宣传部部长年度民主生活会“四个带头”个人对照检查发言材料.docx
- XX县委领导班子年度述职述廉报告3.docx
- 某县纪委关于校园餐问题整治工作落实情况的报告.docx
- 中小学校园食品安全与膳食经费管理专项整治工作自查报告22.docx
- 某县税务局党委领导班子年度民主生活会“四个带头”对照检查材料.docx
- 某县委书记在县委常委班子年度民主生活会专题学习会上的讲话.docx
- 某县纪委校园餐问题整治工作落实情况的报告.docx
- 某区委副书记、区长年度民主生活会对照检查材料.docx
文档评论(0)