- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
前面我们学习的线性数据结构,每个元素都有唯一的前驱(第一个除外)和后继(最后一个除外),但是在现实应用中,一些问题的数据元素之间的关系就不这样简单,例如元素有多个前驱、多个后继。 本章学习一种非线性数据结构一树,数据元素之间是一种层次关系,元素有且只有一个前驱,但可以有多个后继。 树的概念和基本术语 二叉树 二叉树遍历 线索二叉树 树与森林 霍夫曼树 树的高度:树中结点的最大层次.结点的度:结点子树的个数树的度: 树内各结点的度的最大值。叶子结点:也叫终端结点,是度为0的结点;分枝结点:度不为0的结点;有序树:子树有序的树,(子树不能互换)如:家族树;无序树:不考虑子树的顺序; 路径:树中的k 个结点n1,n2,… ,nk,满足ni 是ni + 1 的双亲,n1到nk有一条路径 路径长度:分支数=路径上结点个数一1 对比树型结构和线性结构的结构特点 树的常见表示方法 1.直观表示法:用圆圈表示结点,元素写在圆圈中,连线表示元素之间的关系.根在上,叶子在下(即树向下生长) 2 、集合表示法: 根据树的集合定义,写出集合划分。 3 、文氏图表示法:集合表示的一种直观表示,用图表示集合。 4 、目录表示法:将一棵树描述为一本书,书--章--节--小节 5 、广义表表示法: 将一棵树描述为一个广义表,子树就对应子表。 树的基本操作 InitTree(&T); 操作结果:构造空树T。 DestroyTree(&T); 初始条件:树T存在。 操作结果:销毁树T。 CreateTree(&T,definition) 初始条件:definition给出树T的定义。 操作结果:按definition构造树T。 ClearTree(&T); 初始条件:树T存在。 操作结果:将树T清为空树。 TreeEmpty(T) 初始条件:树T存在。 操作结果:若T为空树,则返回ture,否则false。 TreeDepth(T) 初始条件:树T存在。 操作结果:返回T的深度。 Root(T) 初始条件:树T存在。 操作结果:返回T的根。 Value(T, Cur_e) 初始条件:树T存在,cur_e是T中某 个结点。 操作结果:返回cur_e的值。 Assign(T,cur_e,value) 初始条件:树T存在,cur_e是T中某个结点。 操作结果:结点cur_e赋值 为value。 Parent(T,cur_e) 初始条件:树T存在,cur_e是T中某个结点。 操作结果:若cur_e是T的非根结点,则返回它的双亲,否则函数值为“空”。 Rightsibling(T,cur_e) 初始条件:树T存在,cur_e是T中某个结点 操作结果:若cur_e有右兄弟,则返回它的右兄弟,否则函数值为“空”。 性质2 深度为 k 的二叉树至多有 2 k-1个结点(k ? 1)。 证明:由性质1可见,深度为k的二叉树的最大结点数为 性质5:在完全二叉树中编号(1开始)为i的结点, 1)若有左孩子,则左孩编号为2i; 2)若有右孩子,则有孩子结点编号为2i+1; 3)若有双亲,则双亲结点编号为? i/2?; --------二叉树的顺序存储表示------------ # define MAX_TREE_SIZE 100 //二叉树的最大结点数 typedef TElemType SqBiTree[MAX_TREE_SIZE]; //0号单元存放根结点 SqBiTree bt; 链式存储结构 在顺序存储结构中,利用编号表示元素的位置及元素之间孩子或双亲的关系,因此对于非完全二叉树,需要将空缺的位置用特定的符号填补,若空缺结点较多,势必造成空间利用率的下降。在这种情况下,就应该考虑使用链式存储结构。 常见的二叉树结点结构如下所示: 这种存储结构的特点是寻找孩子结点容易,双亲比较困难。因此,若需要频繁地寻找双亲,可以给每个结点添加一个指向双亲结点的指针域,其结点结构如下所示。 6.3 二叉树的遍历 如何将二叉树线性化? 以中序遍历为例,我们看到通过遍历可以得到二叉树结点的中序序列。若能将中序序列中每个结点前趋、后继信息保存起来,以后再遍历二叉树时就可以根据所保存的结点前趋、
您可能关注的文档
最近下载
- 最新初中地理新课程标准考试题七套(含答案).docx VIP
- 掺镱光纤预制棒、掺镱有源光纤及其制备方法.pdf VIP
- 2025年辽宁省事业单位招聘考试公共基础知识考试试题库及一套完整答案详解.docx VIP
- 人教版四年级上册数学第三单元《角的度量》测试卷推荐.docx VIP
- 党志愿书空白表格.doc VIP
- 强直性脊柱炎的护理查房PPT课件.pptx VIP
- 项目提成管理制度.docx VIP
- 2025中国南水北调集团新能源投资有限公司第二批社会招聘笔试备考题库及答案解析.docx VIP
- 新外研版高中英语选择性必修2Unit5课文翻译.pdf VIP
- 广西示范性高中2024-2025学年高二上学期期中调研测试数学试题(解析版).docx VIP
文档评论(0)