ch5_树和二叉树.ppt

  1. 1、本文档共73页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 树及二叉树 5.1 树的定义和术语 树是n (n≥1) 个结点的有限集合T,并且满足: (1)有一个被称之为根(root)的结点; (2)其余的结点可分为m(m≥0)个互不相交的集合Tl,T2,…,Tm, 这些集合本身也是一棵树,并称它们为根结点的子树(Subree)。 每棵子树同样有自己的根结点。 结点 结点的度 叶子结点 内部结点 儿子结点 父亲结点 兄弟结点 祖先结点 子孙结点 结点所处层次 树的高度 树的定义的形式化描述 树的数学定义 树的数学定义 树的ADT 树的ADT 树的ADT 5.2 二叉树 二叉树在树结构的应用中起着非常重要的作用,因为对二叉树的许多操作算法简单,而任何树都可以与二叉树 相互转换,这样就解决了树的存储结构及其运算中存在的复杂性。 5.2.1 二叉树的定义 定义:二叉树(Binary Tree)是结点的有限集合,它或者为空,或者由一个根结点及两棵互不相交的左、右子树构成,而其左、右子树又都是二叉树。 这也是一个递归定义。二叉树可以为空,根的左、右子树都可以为空。必须注意的是,二叉树不是树的特殊情况,它们是两种不同的数据结构。 若将二叉树的左、右子树颠倒,就成为另一棵不同的二叉树。即使二叉树中的根结点只有一棵子树,也要说明该子树是左子树,还是右子树。这是二叉树与树的最主要的差别。 5.2.1 二叉树的定义 二叉树与树的差别 结点总数为3 的所有二叉树的不同形状 5.2.2 二叉树的性质 二叉树的性质 二叉树的性质 性质3 对于一棵非空二叉树,如果叶子结点数为n0,度数为2的结点数为n2, 则有: n0=n2+1 成立。 证明 设n为二叉树的结点总数,n1为二叉树中度数为1的结点数。 二叉树中所有结点均小于或等于2,所以有: n = n0 + n1 + n2 (5-1) 再看二叉树中的树枝(父结点和儿子结点之间的线段)总数。 在二叉树中,除根结点外,其余结点都有唯一的一个树枝进入本结点。 设B为二叉树中的树枝数,那么有下式成立: B = n-1 (5-2) 这些树枝都是由度为1和度为2的结点发出的, 一个度为1的结点发出一个树枝,一个度为2的结点发出两个树枝, 所以有: B = n1+2n2 (5-3) 由(5-1)、(5-2)、(5-3)式可以得到: n0=n2+1 满二叉树 如果一棵二叉树中的任意一层的结点个数都达到了最大值, 那么这棵二叉树称为满二叉树或丰满树。 图5.4所示是一棵层数为4层的满二叉树,结点个数达到了最大值15。 图5.5不是满二叉树,因第4 层的结点个数未达到最大值。 完全二叉树 在满二叉树的最底层自右至左依次(注意:不能跳过任何一个结点)去掉若干个结点得到的二叉树也被称之为完全二叉树,图(a)就给出了一棵完全二叉树。满二叉树是完全二叉树,但完全二叉树不一定是满二叉树。 完全二叉树的特点是: (1)所有的叶结点都出现在最低的两层上。 (2)对任一结点,如果其右子树的高度为k,则其左子树的高度为k或k+1。 完全二叉树的不同定义 在有些数据结构的教科书上,将具有以下特点的二叉树定义为完全二叉树:即二叉树中的所有结点要么有二个儿子,要么一个儿子也没有。 完全二叉树的高度 完全二叉树的编号分析 5.2.3 二叉树的存储结构 完全二叉树和它的表示 普通二叉树的完全二叉树表示法 右单支树的实例 链接存储结构 二叉树及其存储的标准形式的实例 二叉树及其广义标准形式的表示 二叉树的ADT 二叉树的ADT 二叉树的ADT 二叉树的ADT 二叉树的ADT 求二叉树的结点个数 求二叉树的高度 删除一棵二叉树 5.3 二叉树的遍历 二叉树的前序、中序及后序遍历 二叉树的前序、中序及后序遍历 前序遍历的非递归算法实现 中序遍历的非递归算法实现 后序遍历中第一个被访问的结点 前序 + 中序 唯一确定一棵二叉树 前序 + 中序 唯一确定一棵二叉树 思考 5.4 二叉树遍历的迭代器类(Tree Iterator) 5.4.1 前序遍历迭代器类 5.4.1 前序遍历迭代器类 5.4.2 后序遍历迭代器类 5.4.2 后序遍历迭代器类 5.4.2 后序遍历迭代器类 5.4.2 后序遍历迭

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档