平衡二叉树原理及项目应用.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
平衡二叉树及软件分层设计思想 主讲人:某某某 平衡二叉树及软件分层设计思想 1.平衡二叉树原理 1.平衡二叉树原理 2.二叉排序树的概念 2.平衡二叉树的项目应用 3.软件分层设计思想 总结 本讲座重点讲述了平衡二叉树的原理及其应用,以及软件的分层设计思想。通过本讲座使同学们对平衡二叉树的原理有更加深入的掌握,并且在以后的软件项目开发中,掌握并且使用软件的分层设计架构。软件的分层设计思想在大型的软件项目开发中,具有不可忽视的作用。 * 2.平衡二叉树的项目应用 3.软件分层设计思想 一棵二叉树是n个结点的有限集合,其中每个结点最多有两个孩子。该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。二叉树有五种基本的形态。 1.二叉树的概念 二叉排序树(Binary Sort Tree)或者是一棵空树;或者是具有下列性质的二叉树:(1)若它的左子树不空,则左子树上所有结点的值均小于等于它的根结点的值;(2)若它的右子树不空,则右子树上所有结点的值均大于等于它的根结点的值;(3)它的左、右子树也分别为二叉排序树。 4 8 2 18 12 10 特点:中序遍历序列为非递减序列 3.平衡二叉树的定义 二叉树中某结点左子树的高度与右子树的高度之差称为该结点的平衡因子。平衡因子绝对值不大于1的二叉排序树,称为平衡二叉树。 4.平衡二叉树的结点插入调整方法 (1)平衡二叉树插入调整总体思路 如果新插入的结点改变了原来的平衡性,则首先自插入点,逆向往原根结点,将第一个失衡结点作为新的根结点,然后选择LL,RR,LR,RL四种调整方法去调整。 (2)LL型调整方案 A B E C D h h 0 1 h 1 2 调整方法: B单向右旋,上提为根结点,A要顺时针旋转,成为B的右子树,D成为A的左子树。 B A C D E 核心语句: lc=p-lchild; /*lc指向B p-lchild=lc-rchild; /*把B结点的右子树挂接为A的左子树 lc-rchild=p; /*A结点成为B的右孩子 p=lc; /*p指向新的根结点 p p A a B b c h h 0 -1 调整方法: B单向左旋,代替A成为根结点,将A结点向右下旋转成为B的左子树的根结点,而B的原左子树则作为A结点的右子树。 B A c a b -1 -2 核心语句: lc=p-rchild; /*lc指向B*/ p-rchild=lc-lchild; /*把B结点的左子树挂接为A的右子树*/ lc-lchild=p; /*A结点成为B的左孩子*/ p=lc; /*p指向新的根结点*/ p p (3)RR型调整方案 (4)LR型调整方案 A B C G D F E h h+1 h+1 0 0 1 1 -1 2 C B A G D F E 调整方法:C先左旋后右旋,确定C为新的根结点,将B顺时针旋转作为C的左子树,然后A作为C的右子树。 p b c p-lchild=c-rchild; /*把C的右子树挂接成A的左子树*/ b-rchild=c-lchild; /*把C的左子树挂接成B的右子树*/ c-lchild=b; /*把B挂接成C的左子树*/ c-rchild=p; /*把A挂接成C的右子树*/ (5)RL型调整方案 A B F C G E D C A B F E D G h+1 h h+1 调整方法: C先右旋后左旋,确定C为新的根结点,将B顺时针旋转作为C的右子树,然后A作为C的左子树。 0 0 -1 -1 1 -2 p-rchild=c-lchild; /*把C的左子树挂接成A的右子树*/ b-lchild=c-rchild; /*把C的右子树挂接成B的左子树*/ c-rchild=b; /*把B挂接成C的右子树*/ c-lchild=p; /*把A挂接成C的左子树*/ p b c 例:按下列关键字的次序生成一棵AVL树。 {13,24,37,90,53,28,98} 13 13 插入点 插入后结果 失衡原因 调整 24 37 RR型 13 24 13 24 37 A B 24 37 13 A B 53 RL型 90 24 37 13 90 24 37 13 90 53 A B C -2 24 53 13 90 37 C B A 28 RL型 98 RR型 24 53 13 90 37 B C A 28 -2 37 53 24 90 28 B A C 13 37 53 24 90 28 A B -2 13 98 37 90 24 98 28 13 53 本项目名称为CDMA金盾娱乐信息管理系统。整个项目具备短信

文档评论(0)

lyxbb + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档