网站大量收购独家精品文档,联系QQ:2885784924

第6章-1(树的基本概念)重点.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2.二叉树的基本运算 (1)inittree(T) 二叉树的初始化。 (2)root(T) 求二叉树的根结点。 (3)parent(T,x) 求二叉树T中值为x的结点的双亲。 (4)lchild(T,x) 求二叉树T中值为x的结点的左孩子。 (5) rchild(T,x) 求二叉树T中值为x的结点的右孩子。 (6) lbrother(T,x) 求二叉树T中值为x的结点的左兄弟。 (7) rbrother(T,x) 求二叉树T中值为x的结点的右兄弟。 (8) traverse(T) 遍历二叉树T。 (9) createtree(T) 建立一棵二叉树T。 (10) addlchild(T,x,y) 在二叉树T中,将值为y的结点作为值为x的结点的左孩子插入。 (11) addrchild(T,x,y) 在二叉树T中,将值为y的结点作为值为x的结点的右孩子插入。 (12) dellchild(T,x) 在二叉树T中,删除值为x 的结点的左孩子。 (13) delrchild(t,x) 在二叉树T中,删除值为x 的结点的右孩子。 6.2.2 二叉树的性质 性质1 若二叉树的层数从1开始,则二叉树的第k层结点数,最多为2k-1个(k0)。 可以用数学归纳法证明之。 性质2 深度(高度)为k的二叉树最大结点数为2k-1(k0)。 证明: 深度为k的二叉树,若要求结点数最多,则必须每一层的结点数都为最多,由性质1可知,最大结点数应为每一层最大结点数之和。既为 20+21+…+2k-1=2k-1。 性质3 对任意一棵二叉树,如果叶子结点个数为n0,度为2的结点个数为n2,则有n0=n2+1。 证明:设二叉树中度为1的结点个数为n1,根据二叉树的定义可知,该二叉树的结点数n=n0+n1+n2。又因为在二叉树中,度为0的结点没有孩子,度为1的结点有1 个孩子,度为2的结点有2个结孩子,故该二叉树的孩子结点数为 n0*0+n1*1+n2*2 ,而一棵二叉树中,除根结点外所有都为孩子 结点,故该二叉树的结点数应为孩子结点数加1即:n=n0*0+n1*1+n2*2+1因此,有 n=n0+n1+n2=n0*0+n2*1+n2*2+1,最后得到n0=n2+1。 先定义两种特殊的二叉树: ⑴满二叉树 : 深度为k具有2k-1个结点的二叉树,称为满二叉树。 ⑵完全二叉树: 如果一棵具有n个结点的深度为k的二叉树,它的每 一个结点都与深度为k的满二叉树中编号为1~ n的结点一一对 应,则称这棵二叉树为完全二叉树。 从满二叉树及完全二叉树定义还可以知道: ⑶满二叉树一定是一棵完全二叉树,反之完全二叉树不一定是 一棵满二叉树。 ⑷满二叉树的叶子结点全部在最底层,而完全二叉树的叶子结 点可以分布在最下面两层。 ⑸深度为4的满二叉树和完全二叉树如图6-6所示。 性质4 具有n个结点的完全二叉树高度为?log2(n)?+1 或 ?log2(n+1)? 。 证明:设该完全二叉树高度为k,则该二叉树的前面k-1层为满二叉树,共有2k-1-1个结点,而该二叉具有k层,第k层至少至少有1个结点,最多有2k-1个结点。 下面的不等式成立:-----(2k-1 –1) +1 ≤n ≤(2k-1-1)+2k-1, 即 2k-1≤n≤2k-1。 由式子后半部分可知: n≤2k-1…① 由式子前半部分可知: 2k-1≤n…② 由①有 n+1≤2k ,同时取对数得: log2(n+1)≤k 故 k≥log2(n+1),即 k=?log2(n+1)?。即得到第二个结论。 由②有2k-1≤n,同时取对数得:k≤log2n+1即 k=?log2 n?+1, 即第一个结论成立,证毕。 性质5如果将一棵有n个结点的完全二叉树从上到下,从左到右对结点编号1,2,…,n,然后按此编号将该二叉树中各结点顺序地存放于一个一维数组中,并简称编号为j的结点为 j(1≤j≤n),则有如下结论成立: (1)若 j=1,则结点j为根结点,无双亲,否则j的双亲为 ?j/2?; (2)若2j≤n,则结点j的左子女为2j ,否则无左子女。 即满足2jn的结点为叶子结点; (3)若2j+1≤n,则结点j的右子女为2j+1,否则无右子女; (4)若结点j序号为奇数且不等于1,则它的左兄弟为j-1; (5)若结点j序号为偶数且不等于n,它的右兄弟为j+1; (6) 结点j所在层数(层次)为?log2j?+1; 6.2.3 二叉树的存贮结构 1.顺序存贮结构 ⑴将一棵二叉树按完全二叉树顺序存放到一个一维数组中,若该二叉树 为非完全二叉树,则必须将相应位置空出来,使存

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档