第八章 c11-树第一讲.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
什么是稀疏矩阵 稀疏矩阵表示 广义表定义 树的定义 树的定义 示例:家族树 树的定义 示例本书的目录 树的定义 树的定义 树是由n (n ? 0)个结点组成的有限集合。 如果n = 0,称为空树; 如果n 0,则: 有一个特定的称之为根(root)的结点,它只有后继,但没有前驱; 除根以外的其它结点划分为m(m0)个互不相交的有限集合T1, T2, …, Tm。 每个集合本身又是一棵树,并且称之为根的子树(subTree)。 每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个后继。 树的定义是递归的。 树的定义 示例 树的定义 抽象数据类型树的定义 ADT Tree { 数据对象D:D是具有相同特性的数据元素的集合。 数据关系R:若D为空集,则称为空树; 否则: (1) 在D中存在唯一的称为根的数据元素root, (2) 当n1时,其余结点可分为m (m0)个互 不相交的有限集T1, T2, …, Tm, 其中每一 棵子集本身又是一棵符合本定义的树, 称为根root的子树。 基本操作P:(见教材) } ADT Tree 树的定义 树的基本术语 基本术语 结点:数据元素+若干指向子树的分支 结点的度:分支的个数(或 子树的个数) 叶子结点(终端结点):度为零的结点 分支结点(非终端结点):度不等于零的结点 树的度:树中所有结点的度的最大值 孩子结点:结点的子树的根结点为该结点的孩子结点 双亲结点:与孩子结点相对应的结点 兄弟结点:同一个双亲的孩子结点之间的互称 祖先结点:从根结点起到该结点所经分支上的所有结点 子孙结点:以某结点为根的子树中的任意结点 树的基本术语 基本术语 层次:从根结点起,根结点为第一层,跟的孩子为第二层,依次类推 假设根结点的层次为1,第l 层的结点的子树根结点的层次为 l+1 堂兄弟:双亲在同一层的结点互称 深度:树中叶子结点所在的最大层次 有序树:子树之间存在确定的次序关系 无序树:子树之间不存在确定的次序关系 森林:是m(m≥0)棵互不相交的树的集合。 任何一棵非空树是一个二元组 Tree = (root,F) 其中:root 被称为根结点,F 被称为子树森林 二叉树的定义 二叉树的定义 二叉树是由n(n=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。 二叉树的每个结点至多只有两棵子树(结点的度最多为2)。 二叉树的子树有左右之分,其次序不能任意颠倒。 二叉树的定义 抽象数据类型二叉树的定义 ADT BinaryTree{ 数据对象D:D是具有相同特性的数据元素的集合。 数据关系R:若D为空集,则称为空二叉树; 否则: (1) 在D中存在唯一的称为根的数据元素root (2) 当n1时,其余结点可分为2个互不相交的有限集 Dl,Dr (3)若Dl , Dr都不为空集,则Dl , Dr本身又是一棵符合 本定义的二叉树,称为根root的左右子树。 基本操作P:(见教材) } ADT BinaryTree 二叉树的定义 二叉树的5种基本形态 二叉树的定义 示例:由三个结点组成的二叉树的基本类型有几种? 二叉树的性质 二叉树的性质 性质1:在二叉树的第i层上至多有2i-1 个结点。(i≥1) 证明: 二叉树的性质 性质2:深度为k的二叉树上至多含2k-1个结点(k≥1) 证明: 二叉树的性质 性质3:对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为2的结点, 则必存在关系式:n0 = n2+1 证明: 设 二叉树上结点总数 n = n0 + n1 + n2 又 二叉树上分支总数 B = n1 + 2n2 而 B = n-1 = n0 + n1 + n2 – 1 由此, n0 = n2 + 1 二叉树的存储结构 顺序存储结构 它是用一组连续的存储单元存储二叉树的数据元素。 必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法:从树根起,自上层至下层,每层自左至右的给所有结点编号。 顺序存储表示 #define MAX_TREE_SIZE 100 typedef int TElemType; typedef TElemType SqBiTree[MAX_TREE_SIZE]; SqBiTree bt; 二叉树的存储结构 示例:完全二叉

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档