第19次课树形结构(二).ppt.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * 数据结构 主讲人:张云雷 信息工程学院 授课内容 二叉树概念 二叉树性质 二叉树与树、森林之间的转换 教学目标 理解掌握二叉树的概念 熟练掌握二叉树的性质 熟练掌握二叉树与树、森林之间的转换 教学重点 理解掌握二叉树的性质 熟练掌握二叉树与树、森林之间的转换 教学难点 理解掌握二叉树的性质 7.2.1 二叉树概念 二叉树也称二分树,它是有限的结点集合,这个集合或者是空,或者由一个根结点和两棵互不相交的称为左子树和右子树的二叉树组成。 二叉树的定义是一种递归定义。 二叉树有五种基本形态,如下图所示,任何复杂的二叉树都是这五种基本形态的复合。 从定义看到,二叉树是一种特殊的树,其表示法也与树的表示法一样,有树形表示法、文氏图表示法、凹入表示法和括号表示法等。 在一棵二叉树中,如果所有分支结点都有左孩子结点和右孩子结点,并且叶结点都集中在二叉树的最下一层,这样的二叉树称为满二叉树。下图所示就是一棵满二叉树。可以对满二叉树的结点进行连续编号,约定编号从树根为1开始,按照层数从小到大、同一层从左到右的次序进行。图中每个结点外边的数字为对该结点的编号。 若二叉树中最多只有最下面两层的结点的度数可以小于2,并且最下面一层的叶结点 都依次排列在该层最左边的位置上,则这样的二叉树称为完全二叉树。如下图所示为一棵完全二叉树。同样可以对完全二叉树中每个结点进行连续编号,编号的方法同满二叉树相同。图中每个结点外边的数字为对该结点的编号。 7.2.2 二叉树性质 性质1 非空二叉树上叶结点数等于双分支结点数加1。 证明:设二叉树上叶结点数为n0,单分支结点数为n1,双分支结点数为n2,则总结点数=n0+n1+n2。在一棵二叉树中,所有结点的分支数(即度数)应等于单分支结点数加上双分支结点数的2倍,即总的分支数=n1+2n2 由于二叉树中除根结点以外,每个结点都有惟一的一个分支指向它,因此二叉树中有:总的分支数=总结点数-1。 由上述三个等式可得:n1+2n2=n0+n1+n2-1 即:n0=n2+1 性质2 非空二叉树上第i层上至多有2i-1个结点,这里应有i≥1。 由树的性质2可推出。 性质3 高度为h的二叉树至多有2h-1个结点(h≥1)。 由树的性质3可推出。 性质4 对完全二叉树中编号为i的结点(1≤i≤n,n≥1,n为结点数)有: (1) 若i≤?n/2?,即2i≤n,则编号为i的结点为分支结点,否则为叶子结点。 (2) 若n为奇数,则每个分支结点都既有左孩子结点,也有右孩子结点;若n为偶数,则编号最大的分支结点(编号为)只有左孩子结点,没有右孩子结点,其余分支结点都有左、右孩子结点。 (3) 若编号为i的结点有左孩子结点,则左孩子结点的编号为2i;若编号为i的结点有右孩子结点,则右孩子结点的编号为(2i+1)。 (4) 除树根结点外,若一个结点的编号为i,则它的双亲结点的编号为?i/2?,也就是说,当i为偶数时,其双亲结点的编号为i/2,它是双亲结点的左孩子结点,当i为奇数时,其双亲结点的编号为(i-1)/2,它是双亲结点的右孩子结点。 性质5 具有n个(n>0)结点的完全二叉树的高度为?log2n+1?或?log2n?+1。 由完全二叉树的定义和树的性质3可推出。 7.2.3 二叉树与树、森林之间的转换 1.森林、树转换为二叉树 步骤如下: (1) 在所有相邻兄弟结点(森林中每棵树的根结点可看成是兄弟结点)之间加一水平连线。 (2) 对每个非叶结点k,除了其最左边的孩子结点外,删去k与其他孩子结点的连线。 (3) 所有水平线段以左边结点为轴心顺时针旋转45度。 通过以上步骤,原来的森林就转换为一棵二叉树。一般的树是森林中的特殊情况,由一般的树转换的二叉树的根结点的右孩子结点始终为空,原因是一般的树的根结点不存在兄弟结点和相邻的树。 将森林转换为二叉树的过程 2. 二叉树还原为森林、树 步骤如下: (1) 对于一棵二叉树中任一结点k0,沿着k0的左孩子结点k1的右子树方向搜索所有右孩子结点,即搜索结点序列k2,k3,…,km,其中ki+1为ki的右孩子结点(1≤i<m),km没有右孩子结点。 (2) 删去k1,k2,…,km之间连线。 (3) 若k1有双亲结点k,则连接k与ki(2≤i≤m) (4) 将图形规整化,使各结点按层次排列。 将一棵二叉树还原为树的过程 7.3 二叉树存储结构 7.3.1 二叉树的顺序存储结构 二叉树的顺序存储结构中结点的存放次序是:对该树

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档