第6章-树与二叉树..pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 树和二叉树 【学习目标】 1.领会树和二叉树的类型定义,理解树和二叉树的结构差别。 2.熟记二叉树的主要特性,并掌握它们的证明方法。 3.熟练掌握二叉树的各种遍历算法,并能灵活运用遍历算法实现二叉树的其它操作。 4.理解二叉树的线索化过程以及在中序线索化树上找给定结点的前驱和后继的方法。 5.熟练掌握二叉树和树的各种存储结构及其建立的算法。 6.学会编写实现树的各种操作的算法。 7.了解最优树的特性,掌握建立最优树和赫夫曼编码的方法。 【重点和难点】 二叉树和树的遍历及其应用是本章的学习重点,而编写实现二叉树和树的各种操作的递归算法也恰是本章的难点所在。 【知识点】 树的类型定义、二叉树的类型定义、二叉树的存储表示、二叉树的遍历以及其它操作的实现、线索二叉树、树和森林的存储表示、树和森林的遍历以及其它操作的实现、最优树和赫夫曼编码 6.1树的类型定义 树型结构是一类重要的非线性结构,树型结构广泛用于描述家族谱系以及其它社会组织结构。在计算机领域中,如编译程序中的语法结构和数据库中的信息组织也都需要借用树来描述。本章将讨论树和二叉树两种树型结构。 例: 祖父 伯父 父亲 叔父 堂兄 堂姐 自己 堂弟 侄儿 家族谱系图可用如下关系表示:  祖父,伯父,祖父,父亲,祖父,叔父,伯父,堂兄,伯父,堂姐,父亲,你, 叔父,堂弟,堂兄,侄儿 树(Tree):包含n(n=0)个结点的有限集合。当n=0时称为空树;任意一棵非空树满足以下条件: 1)有且仅有一个称为根(root)的结点。(无前趋) 2)除根外,每个结点都有且仅有一个前驱。 3)当n1时,其余结点可分为m(m0)个互不相交的有限集合T1,T2,… ,Tm,其中每一集合本身又是一棵树,称为这个根结点的子树。 树的定义是采用递归方法。 例如所示图为含13个数据元素的集合,其中,A 为根,其余12个数据元素分为3个互不相交的子集 T1={B,E,F,K,L}、T2={C,G}和T3={D,H,I,J,M},每个子集都是一棵树,称为A的子树,它们的根结点都是 A的后继。这是一个递归的定义,如在子树T1中,B是根,其余元素分为2个互不相交的子集T11={E}和 T12={F,K,L},每个子集构成一棵B的子树,子树中的根结点是B的后继,依次类推。换句话说,在这13 个数据元素之间存在下列关系: R={A,B,A,C,A,D,B,E,B,F,C,G,D,H,D,I,D,J,F,K,F,L,J,M}。 虽然图上的线条没有标上箭头,但实际上存在着有向关系。因此,树是一种层次分明的结构 术语: ?结点:包含一个数据元素及若干指向其子树的分支 ?结点的度:结点拥有的子树数 ?叶子(终端结点):度为0的结点 ?分支结点(非终端结点):度不为0的结点。除根之外的分支结点也称为内部结点。 ?树的度:树内各结点的度的最大值 称根和子树根之间的连线为分支”,分支代表了树中结点的关系,是有方向的. ?孩子:结点的子树的根称为该结点的孩子 ?双亲: ?兄弟:同一双亲的孩子间互称兄弟 ?祖先:从根到该结点所经分支上的所有结点 ?子孙:以某结点为根的子树中的任一结点称为该结点的子孙 ?层次:根为第一层,根的孩子为第二层。。。 ?堂兄弟:双亲在同一层的结点互为堂兄弟 ?树的深度(或高度):树中结点的最大层次 ?有序树:树中各子树从左至右有次序,不能交换 ?无序树: ?第一个孩子:有序树中,最左边的子树的根 ?最后一个孩子:有序树中,最右边的子树的根 ?森林:m(m=0)棵互不相交的树的集合 树的另一定义:树是一个二元组Tree=(root,F),root是数据元素,称为树的根。F是m(m0)棵树的森林。F=(T1,T2,...Tm),其中Ti=(ri,Fi)称做根root的第i棵子树;当m0时,在树根和其子树之间存在关系:RF={root, ri |i=1,2,...,m,m0} ADT Tree {  数据对象:D是具有相同特性的数据元素的集合。 数据关系:   若 D 为空集,则称为空树;   若 D 中仅含一个数据元素,则关系R为空集;   否则 R={H},   树的抽象数据类型的定义如下 (1) 在D中存在唯一的称为根的数据元素 root,它在关系H下无前驱; (2) 当n1时,其余数据元素可分为 m(m0) 个互不相交的(非空)有限集 T1,T2,…,Tm, 其中每一个子集本身又是一棵符合本定义的树,称为根 root 的子树,每一棵子树的根 xi 都是根 root 的后继,即 root,xi H,i=1,2,…,m。 基本操作: inittree(T); DestroyTree(T); CreatTree(T,definition); ClearTree(T); Tree

文档评论(0)

juhui05 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档