第6章 树和二叉树.pptxVIP

  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 树 6.2 二叉树 6.3 二叉树的遍历 6.4 森林与二叉树的转换 6.5 哈夫曼树及其应用 6.1 树 树是一种非线性的层次结构。在客观世界中,我们所熟悉的人类家族谱系和各种社会管理机构的组织架构都反映了这种层次结构。在计算机科学中,树为具有层次关系或分支关系的数据提供了一种自然的表示,可以用来描述操作系统中文件系统的结构,也可以用来组织数据库系统的信息,还可以在编译过程中表示源程序的语法结构。 6.1.1 树的定义和表示树是由n(n≥0)个结点构成的有限集合。当n=0时,称为空树;对n>0的树T有: ①有一个特殊的结点称为根;②当n>1时,除根结点外其他结点被分成m(m>0)个互不相交的集合T1,T2,…,Tm。其中,每一个集合Ti(1≤i≤m)本身又是一棵树,称为根结点的子树。◆树的多种表示方法: (1)直观表示法 (2)嵌套集合表示法 (3)凹入表示 法6.1.2 树的基本术语和操作1.树的基本术语 (1)孩子、双亲、兄弟、子孙、祖先 、堂兄弟 (2)结点的度和树的度 (3)叶子结点和分支结点 (4)树的高度 (5)森林 、有序树 、无序树 2.树的基本操作 ◆ 树的基本操作主要有创建、销毁、查询、插入、删除、遍历等。 ◆树的抽象数据类型 (参见教材)6.1.3 树的存储结构1.双亲表示法将树结点顺序存储在一个数组中。每个数组元素中除存放结点信息外,还需要存放该结点双亲的下标值。树的双亲表示法存储结构描述如下:#define MAXSIZE 1000 // 结点个数的最大值 typedef struct{ElemType data; // 结点信息 int parent; // 双亲结点下标 } TNode;TNode tree[MAXSIZE+1]; // tree[0]未用 2.孩子链表表示法将树中每个结点设置一个指针域,该指针指向该结点所有孩子结点构成的链表。树中所有结点的信息及其孩子链表的头指针又组成一个顺序表。这种存储结构的描述如下:#define MAXSIZE 1000 // 结点的个数最多为1000 typedef struct ChildNode // 孩子链表表示法结点的定义  { int Child; // 该孩子结点在顺序表中的位置  struct ChildNode *next; // 指向下一个孩子结点的指针  } ChildNode; typedef struct // 顺序表结点的结构定义 { ElemType data; // 结点信息 ChildNode *FirstChild; // 指向孩子链表的头指针 } TNode;TNode tree[MAXSIZE+1]; // 树的孩子链表表示◆孩子链表表示法便于实现涉及孩子及其子孙的运算,但不便于实现与双亲有关的运算。 ◆可以将双亲表示法和孩子链表表示法相结合,在孩子链表表示的顺序表中增加一个parent域,这就是树的孩子双亲表示法 。3.孩子兄弟表示法孩子兄弟链表的结点结构是:一个结点信息域和两个指针域,孩子指针指向它的第一个孩子结点,兄弟指针指向它的下一个兄弟结点。这种存储结构的描述如下: typedef struct CSNode { ElemType data;// 结点信息 struct CSNode *FirstChild,*NextSibling; // 第一个孩子,下一个兄弟 }CSNode,*CSTree; 返回本章目录 6.2 二叉树 6.2.1 二叉树的定义 二叉树(Binary Tree)是n(n≥0)个结点构成的有序树。当n=0时,称为空二叉树;对n>0的二叉树由一个根结点和两个互不相交的、分别称作左子树和右子树的子二叉树构成。二叉树每个结点的度不大于2。二叉树共有五种基本形态 二叉树的抽象数据类型 (参见教材)6.2.2 二叉树的性质性质1 二叉树第i(i≥1)层上至多有2i-1个结点。性质2 高度为k(k≥1)的二叉树至多有个结点。性质3 在任意二叉树中,n0=n2+1。满二叉树:高度为k含有2k-1个结点的二叉树。完全二叉树:对于高度为k,含有n个结点的二叉树,从根结点开始自上向下,自左至右顺序编号,它的每个结点的编号都与相应满二叉树结点顺序编号从1到n相对应。性质4 具有n个结点的完全二叉树高度为 log2n+1。 性质5 若对有n个结点的完全二叉树按照从上至下、从左至右进行顺序编号,那么,对于编号为i(1≤i≤n)的结点: 1)当i=1时,该结点为根,它无双亲结点;当i>1时,该结点的双亲结点编号为; 2)若2i≤n,它有编号为2i的左孩子,否则没有左孩子; 3)若2

文档评论(0)

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

教师资格证持证人

全网 内容最全课件 价格最低 质量最高 不是之一,是唯一。 每个人使用的办公软件版本不一样,如有个别显示不出的文件,建议使用最新版。

版权声明书
用户编号:8070063100000015
领域认证该用户于2023年03月20日上传了教师资格证

1亿VIP精品文档

相关文档