- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 树和二叉树 教学目的与要求: 了解树、二叉树、森林的概念。 掌握二叉树的基本性质、基本操作。 掌握哈夫曼树的性质与操作。 重点与难点: 二叉树的基本性质、遍历方法。 哈夫曼树的基本思想及应用。 授课时间:12学时 6.1树的定义和基本术语 定义:树(Tree)是n(n=0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件: (1)有且仅有一个特定的称为根的结点; (2)其余的结点可分为m(m=0)个互不相交的子集T1,T2,…,Tm, 其中每个子集又是一棵树,并称其为子树。 6.2二叉树 二叉树在树型结构的应用中起着非常重要的作用。因为对二叉树的许多操作算法简单,而任何树又都可以与二叉树相互转换,这样就解决了树的存储结构及其运算中存在的复杂性。 6.2.1 二叉树的定义 定义:二叉树是由n(n=0)个结点的有限集合构成,此集合或者为空集,或者由一个根结点及两棵互不相交的左右子树组成,并且左右子树都是二叉树。 这也是一个递归定义。二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,它们是两个概念。 二叉树结点的子树要区分左子树和右子树,即使只有一棵子树也要进行区分,说明它是左子树,还是右子树。这是二叉树与树的最主要的差别。 下面介绍两种特殊形态的二叉树:满二叉树和完全二叉树。 满二叉树:一棵深度为k且有2k-1个结点的二叉树称为满二叉树。下图就是一棵满二叉树。 完全二叉树:如果一棵具有n个结点的二叉树的结构与满二叉树的前n个结点的结构相同,这样的二叉树称之为完全二叉树。深度为k的完全二叉树的特点是: (1)所有的叶结点都出现在第k层或k-1层。 (2)对任一结点,如果其右子树的最大层次为H,则其左子树的最大层次为H或H+1。 结论:满二叉树一定是完全二叉树;完全二叉树不一定是满二叉树。 6.2.2 二叉树的性质 性质1: 若规定根结点的层次数为1,在二叉树的第i层上至多有2i-1个结点(i=1)。 证明:采用归纳法证明此性质。 当i=1时,只有一个根结点,2i-1=20 =1,命题成立。 现在假定对所有的j(1=ji),命题成立,即第j层上至多有2j-1个结点。 由归纳假设可知,第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,因为二叉树中所有结点均小于或等于2,所以有: N=n0+n1+n2 ……………..(6-1) 再考虑二叉树中的分支数,除根结点外,其余结点都有一个进入分支,设B为二叉树中的分支总数,则有: N=B+1…………….(6-2) 由于这些分支都是由度为1和2的结点发出的,所以有: B=n1+2*n2………..(6-3) 由式(6-1)、(6-2)和(6-3)得到: n0=n2+1 性质4:具有n个结点的完全二叉树的深度为: 性质5: 如果对一棵有n个结点的完全二叉树的结点按层序编号(从第1层到第 层,每层从左到右),则对任一结点i(1=i=n),有: (1)如果i=1,则结点i无双亲,是二叉树的根;如果i1,则其双亲是结点。 (2)如果2in,则结点i为叶子结点,无左孩子;否则,其左孩子是结点2i。 (3)如果2i+1n,则结点i无右孩子;否则,其右孩子是结点2i+1。 6.2.3 二叉树的存储结构 1.顺序存储结构 它是用一组连续的存储单元存储二叉树的数据元素。因此,必须把二叉树的所有结点安排成为一个恰当的序列,结点在这个序列中的相互位置能反映出结点之间的逻辑关系,用编号的方法从树根起,自上层至下层,每层自左至右的给所有结点编号。 在图中,为了与性质五从1编号相对应,0号单元不用。在顺序表中对应位置为NULL的,表示对应的位置没有结点。 优点:在不需要插入、删除树结点的情况下,对于完全二叉树,采用顺序存储方式,既节省空间,操作也很方便。 缺点:对于非完全二叉树,缺点是有可能对存储空间造成极大的浪费,在最坏的情况下,一个深度为H且只有H个结点的右单支树却需要2h-1个结点存储空间。 若经常需要插入与删除树中结点时,顺序存储方式不是很好,这是由顺序表的结构决定的。 2.二叉链表存储结构 二叉链表存储结构的每个结点包含三个域:数据域data,指向左孩子
文档评论(0)