数据结构(C)Chapter7:树和二叉树资料.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上堂课要点回顾串顺序串串的模式匹配算法-BF算法数组特殊矩阵的压缩存储Chapter7:树和二叉树MotivationMotivation在游戏/人工智能中,通常有很多分类判断。例如,设主角的生命值d,在省略其他条件后,有这样的条件判定:当怪物碰到主角后,怪物的反应遵从下规则:   根据条件,我们可以用如下普通算法来判定怪物的反应:if(d100)state=嘲笑,单挑; elseif(d200)state=单挑; elseif(d300)state=嗜血魔法; elseif(d400)state=呼唤同伴; elsestate=逃跑;if(d=200)(d300)state=嗜血魔法; elseif(d=300)(d500)state=呼唤同伴; elseif(d=100)(d200)state=单挑; elseif(d100)state=嘲笑,单挑; elsestate=逃跑;算法适用大多数情况,但其时间性能不高,我们可以通过判定树来提高其时间性能。首先,分析主角生命值通常的特点,即预测出每种条件占总条件的百分比,将这些比值作为权值来构造最优二叉树(哈夫曼树),作为判定树来设定算法客观世界中的树形结构:人类社会的家谱,族谱;各种组织机构的表示;计算机领域:编译程序的语法结构;数据库系统中的信息组织;磁盘文件的目录;软件工程中的模块划分。树结构示例1-族谱树结构示例2-模块划分树结构示例3:DNS命名语法: 主机名.单位名.类型名.国家代码 例如:以树型结构实现域名的搜索:在该树从根到叶子的各层结点就应是root、cn、edu、cug、www。叶节点www另有一个数据域,存放中国地质大学站点的IP地址45本章内容树的定义、ADT和存储结构二叉树的定义、ADT、性质和存储结构二叉树的操作实现二叉树的遍历线索二叉树*树与二叉树的转换树的遍历哈夫曼树及其应用二叉排序树*学习重点树的基本概念及存储结构二叉树的遍历方法树的应用哈夫曼树二叉排序树一.树的定义和运算1.树的定义树是由n(n≥0)个结点组成的有限集合T。n=0的树称为空树;对n0的树,有:(1)仅有一个特殊的结点称为根结点,根结点没有前驱结点;(2)当n1时,除根结点外其余的结点分为m(m0)个互不相交的有限集合T1,T2,…,Tm,其中每个集合Ti本身又是一棵结构和树类似的子树。注:树的定义具有递归性,即“树中还有树”。例:(a)只有根结点的树(b)一般的树AGFEDCBA两种数据结构的比较 线性结构树形结构第一个数据元素无前驱无前驱,根结点最后的数据元素是一个结点,无后继是多个叶子结点,无后继其它数据元素有一个直接前驱和一个直接后继有一个直接前驱和多个直接后继一.树的定义和运算2.树的表示方法(1)直观表示法(2)形式化表示法(3)凹入表示法(章节表示法)根结点:篇A:章B:节D:E:F:小节I:章C:节H:节G:GFECDBAHI(4)集合表示法例:GFECDBAHIBDEFCGIHA可表示为:其他表示方法(5)嵌套区间法(括号表示法)A(B(D,E,F),C(G(I),H))GFECDBAHI若干术语结点:由数据元素和构造数据元素之间关系的指针组成结点的度:结点所拥有的子树的个数叶结点:度为0的结点,也称作终端结点分支结点:度不为0的结点孩子结点:树中一个结点的子树的根结点双亲结点:若树中某结点有孩子结点,则这个结点就称作它的孩子结点的双亲结点若干术语(Cont.)兄弟结点:具有相同的双亲结点的结点树的度:树中所有结点的度的最大值结点的层次:从根结点到树中某结点所经路径上的分支数树的深度:树中所有结点的层次的最大值无序树:树中任意一个结点的各孩子结点之间的次序构成无关紧要的树有序树:树中任意一个结点的各孩子结点有严格排列次序的树森林:m(m≥0)棵树的集合树的高度:树的深度加1第0层第1层结点A的度:3结点B的度:2结点M的度:0叶子:K,L,F,G,M,I,J结点A的孩子:B,C,D结点B的孩子:E,F结点I的双亲:D结点L的双亲:E结点B,C,D为兄弟结点K,L为兄弟树的度:3结点A的层次:0结点M的层次:3树的深度:3树的高度:4结点F,G为堂兄弟结点A是结点F,G的祖先任何一棵非空树是一个二元组Tree=(root,F)其中:root被称为根结点F被称为子树森林森林(forest):是m(m≥0)棵互不相交的树的集合ArootBCDEFGHIJMKLF一.树的定义和运算3.树的抽象数据类型(ADTTree)数据集合:树的结点集合,每个结点由数据元素和构造数     据元素之间关系的指针组成。操作集合:(1)创建树 MakeTree(T) (2)撤消树 DestroyTree(T)(3)查找树中当前结点的双亲结点 Parent(T,curr)(4)查找树中当前

文档评论(0)

tt435678 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档