第6章 二叉树及树.ppt

  1. 1、本文档共81页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 二叉树和树 6.1 二叉树 二叉树在树结构的应用中起着非常重要的作用,因为对二叉树的许多操作算法简单,而任何树都可以与二叉树相互转换,这样就解决了树的存储结构及其运算中存在的复杂性。 6.1.1 二叉树的定义 二叉树(Binary Tree)是由n(n≥0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。 这是一个递归定义。二叉树可以是空集合,根可以有空的左子树或空的右子树。 基本术语 结点(node)——表示树中的元素,包括数据项及若干指向其子树的分支 结点的度(degree)——结点拥有的子树数 叶子(leaf)——度为0的结点 孩子(child)——结点子树的根称为该结点的孩子 双亲(parents)——孩子结点的上层结点叫该结点的~ 二叉树结点的子树要区分左子树和右子树,即使只有一棵子树也要进行区分,说明它是左子树,还是右子树。这是二叉树与树的最主要的差别。下图列出二差树的5种基本形态,图(C) 和图(d)是不同的两棵二叉树。 二叉树的操作 1、建立一棵空二叉树:InitialBTree(BT) 初始条件:无; 操作结果:构造一棵空树BT。 2、按某种规则建立一棵二叉树:CreateBTree(BT) 初始条件:无; 操作结果:按某种规则构造一棵二叉树BT。 3、求二叉树BT的树根结点:RootBTree(BT) 初始条件:二叉树BT已存在; 操作结果:返回二叉树BT的根结点。 4、求二叉树BT中结点p的双亲:ParentBTree(BT,p) 初始条件:二叉树BT已经存在,且p是二叉树BT中的一个结点; 操作结果:若结点p不是二叉树BT的根结点,则返回结点p的双亲结点; 否则,返回NULL。 6.1.2 二叉树的性质 性质1: 在二叉树的第i层上至多有2i-1个结点(i=1)。 证明: 采用归纳法证明此性质。 当i=1时,只有一个根结点,2i-1=20 =1,命题成立。 现在假定对所有的j,1≤ji,命题成立,即第j层上至多有2j-2个结点,那么可以证明j=i时命题也成立。由归纳假设可知,第i-1层上至多有2i-2个结点。 由于二叉树每个结点的度最大为2,故在第i层上最大结点数为第i-1层上最大结点数的二倍, 即2×2i-2=2i-1。 命题得到证明。 性质2:深度为k的二叉树至多有2k-1个结点(k≥1)。 证明: 深度为k的二叉树的最大的结点时为二叉树中每层上的最大结点数之和,由性质1得到每层上的最大结点数。 性质3:对任何一棵二叉树,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1。 证明: 设二叉树中度为1的结点数为n1,二叉树中总结点数为n,则有:n=n0+n1+n2 (6-1) 再看二叉树中的分支数,除根结点外,其余结点都有一个进入分支,设B为二叉树中的分支总数,则有:n=B+1 由于这些分支都是由度为1和2的结点产生的,则有: B=n1+2*n2 n=B+1=n1+2×n2+1 (6-2) 由式(6-1)和(6-2)得到: n0+n1+n2=n1+2*n2+1 n0=n2+1 性质4:具有n个结点的完全二叉树的深度为: ?log2n? + 1。 证明:假设完全二叉树的深度为k。 由性质2和完全二叉树的定义可知: 或者 对上式取对数则有: 由于k是整数,则:k = ?log2n? + 1 性质5:具有n个结点的完全二叉树,如果从根结点开始,从上到下为每一个结点从左到右进行编号,那么就有: ⑴ 若i=1,则结点为二叉树的根,无双亲结点。否则,若i1,则i结点父结点的编号为?i/2?; ⑵ 若2i≤n,则结点的左孩子结点的编号为2i;否则结点i无左孩子(叶子结点) ⑶ 若2i+1≤n,则结点的左孩子结点的编号为2i+1;否则无有孩子 证明:可以采用数学归纳法。 正是由于完全二叉树具有如此特点,所以完全或满二叉树可以采用一个一维数组来存储。 6.1.3 二叉树的存储结构 1.顺序存储方法: 它是用一组连续的存储单元存储二叉树的数据元素。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法。 #d

文档评论(0)

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

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

1亿VIP精品文档

相关文档