最佳二叉排序树的动态检索算法之新解

来源 :硅谷 | 被引量 : 0次 | 上传用户:hanjiajiaji
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]给出一种最佳二叉排序树的动态检索算法。其性能优于二叉排序树和平衡二叉树。克服了用折半检索方法构造最佳二叉排序树的缺点,且不会因插入结点发生蜕变而影响检索的性能。
  [关键词]树形目录 最佳一叉排序树 动态检索 算法
  中图分类号:O13 文献标识码:A 文章编号:1671-7597(2008)1120082-01
  
  一、引言
  
  由于树形目录的存储结构比线性表作为表的组织形式灵活,所以在数据处理中经常要使用树形目录进行检索。构造树形目录的方法有:二叉排序树,平衡二叉树和最佳二叉排序树。在所有结点的检索概率相等的情况下,最佳二叉排序树的平均比较次数是最少的。
  最佳二叉排序树通常采用折半检索方法进行构造,但当检索某个关键字不在最佳二叉排序树中时,需将该关键字插入其中,经过插入之后,最佳二叉排序树可能会发生蜕变而不具有最佳二叉排序树的性能。为了保证插入结点之后仍为最佳二叉排序树,可使用折半检索方法重新进行构造,但其效率甚低。因此,本文提出了一种最佳二叉排序树的动态检索算法。当检索的关键字不在该最佳二叉排序树中时,插入其适当位置,若插入关键字之后,该二叉排序树仍为最佳二叉排序树,则插入完成,否则在发生蜕变的最佳二叉排序树的基础上找到一棵离插入结点最近的、发生蜕变的最小二叉树进行动态调整生成新的最佳二叉排序树。
  
  二、算法原理
  
  为了便于理解算法,在此简述一下最佳二叉排序树的定义和性质。所谓最佳二叉排序树是指平均比较次数最少的二叉排序树;最佳二叉排序树的所有子树均为最佳二叉排序树;最佳二叉排序树除最低层的结点可以不满之外,其余各层的结点均是满的。
  (一)定义。二叉排序树中任一结点的左子树上的结点的个数与右子树上结点个数之差,称为结i从因子,用nd表示,即:nd=右子树上结0的个数一左子树上结点的个数。
  下而给出判断最佳二叉排序树因插入结点之后发生蜕变的定理。
  (二)定理。若一棵最佳二叉排序树插入结点之后,蜕变成非最佳二叉排序树时,应满足下述两个条件:①从根结点至插入结点的路径上一定存在某个结点的nd的绝对值大于等于2;②插入结点的父结点一定为叶子结点。
  证先证明条件①,设插入结p之前,最佳二叉排序树为n层,即第n层是不满的,但由于插入结点之后破坏了最佳二叉排序树的性质。所以插入的结点一定是在第n+1层,在最佳二叉排序树中的第n一1层至少有一个结点的分支为1或0,插入的结点的父结点是在第n层上,显然从根结点至插入结点的路径上必有nd的绝对值大于等于2的结点。
  条件②用反证法来证明:若插入结点的父结点不是叶子结点,则插入的结点的父结点的分支应为1。那么插入的结点不是在父结点的左字树上就是在右子树上。在插入结点之前未发生蜕变。所以插入此结点之后一也不会发生蜕变。因此不会破坏最佳一叉排序树的性质。
  当最佳一叉排序树为n层目_第n层是满的时。插入的结点一定是在第n+1层。插入结点之前从根到第n层上的每个结点的nd均为0。插入结点之后。从根到插入结点的路径上不会出现nd的绝对值大于等于2的结点。显然。不会因插入结点而导致蜕变。
  下而举例略加说明。图1是一棵最佳二叉排序树,插入结点80之后的结果如图2所示。从图2中可以看出,插入结点80之后,结点50的nd= 2,满足定理的第一个条件,但结点80的父结点己有左子树为65的结点,它不是插在叶结点上,故不满足条件②。因而插入结点80之后仍为最佳二叉排序树,未发生蜕变不需调整。在图2中插入结点90之后的结果如图3所示,结点50的nd= 3,满足条件①,结点90是插在叶结点80的右子树之上满足条件②,故不满足最佳二叉排序树的性质,需加调整,不满足条件①的除结点50之外。还有结点100。从前而给出的例1可以看出,现在就需要查找到离插入结点最近的且满足条件①和②的r树,然后进行调整。下面归结为几种情况:
  (1)如果插入结点之前,从根至插入结点的路径上所有结点的nd= 0,则插入结点后,从根至插入结点路径上的结点的nd变为一1或1,不满足条件①,此时不需要调整。
  (2)如果插入结点之前,从根至插入结点的路径上存在nd≠0的结点,则插入结p后的nd的绝对值变小了,则不需要调整,这说明插入的结点是插在结点个数较少的子树上。
  (3)如果插入结点是插在结点较多的子树上,但插入结点的父结点不是叶结点,不满足条件②,故不需调整。
  (4)如果插入结点是插在较多的子树上,且插入结点是插在叶结点之上,满足条件①和②。此种情况需要调整。
  


  
  三、算法思想和描述
  
  首先从根结点开始,然后根据要插入结点的关键字值的大小,用指针p查找插入位置,并计算其路径上每个结点的nd的值。若[p→nd]>=2时,则t=p;若[p→nd]+1<1或[p→nd]-1>-1,则t=N ill;若p= Nill,则将插入结点插入其相应正确的位置。
  插入结点之后,若t→nd>1,则在t所指结点的右r树上找出一个结点的最小关键字值替换t所指结点的关键字值,并将t原来所指结点的关键字值插入t的左子树上。
  插入结点之后。若t→nd<-1,则在t所指结点的左r树上找出一个结点的最大关键字值替换t所指结点的关键字值,并将t原来所指结点的关键字值插入t的右子树上。
  
  四、结论
  
  一般说来,当结点个数相同的情况下,二叉排序树的深度大于平衡二叉树,而平衡二叉树的深度又大于最佳二叉排序树。所以,检索二叉排序树的效率最低,最佳二叉排序效率最高。当需要插入结点时,最佳二叉排序树和平衡二叉树有时需要调整以保持其相应的特性。
  本文给出的调整算法是在插入结点之后进行的,只是局限在一个最小的二叉排序树范围之内,克服了用折半检索方法构造最佳二叉排序树的缺点。另外,折半检索算法与最佳二叉排序树的检索性能是一样的。但前者要求检索的关键字是有序的,且应顺序存储这就难以适应动态变化的要求。
  
  参考文献:
  [1]Clifford A Shaffer。A Praccion Incrndnction to Daces Strutures and A Lgorchirn A nalysis.New York:Prentice IIall, 1997.
  [2]William Ford, William Topp.Data Structures with C++。New York:Prentice IIall, 1996.
  [3] XC Zhou-qun, ZhANG Nai-xiiao,YANG Dong-qing et al . Data Structures。Beijing:Higher Education Press,1987.172-176( Ch).
其他文献
运用文献资料法、问卷调查法、访谈法、数理统计法等研究方法,对苏北五市游泳社会体育指导员的结构等现状分析,探析游泳社会体育指导员培养类别、培养内容以及培训机构,寻找出更
请下载后查看,本文暂不支持在线获取查看简介。 Please download to view, this article does not support online access to view profile.
我省新余、萍乡地区煤铁资源极其丰富,厂矿也比较集中。随着工农业生产的发展,特别是国家的大型钢铁公司在新余的建立,新余、萍乡两地区的基建项目日益增加,为工矿企业服务
今天,面对广播电视、新闻网站激烈的新闻竞争,传统媒体靠什么打造自己的核心竞争力?在回答这个问题时,一度势微而失去先锋性的深度报道再度被纳入了传统媒体人的视野。与广
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
4月18日下午,教育部职成教司职教处陈光处长在省教委职教处赵邦友处长、市教委赵学范副主任、市教委职教处窦成英处长的陪同下视察了成都礼仪职中。陈处长听取了校长何小婉
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥
[摘要]主要探讨网络环境下高校图书馆开展情报信息服务的形式,进而提出利用博客形式开展参考咨询服务好额利用网络进行教育培训等。  [关键词]知识服务 读者服务 高校图书馆  中图分类号:G252 文献标识码:A 文章编号:1671-7597(2008)1120074-01    现代计算机技术好和通讯技术的迅猛发展,改变了信息的存储、传播及利用方式。数字化、网络化信息资源正在取代以纸张为主要载体的传
语文教学一直是我国教育体系的重点,是学生学习其他学科的基础,学习语文知识,不仅是学习语文基础知识,还要培养学生的综合能力与素质。在初中语文教学中,教学方法对教学质量
期刊
该文从挂篮荷载计算、施工流程、支座及临时固结施工、挂篮安装及试验、合拢段施工、模板制作安装、钢筋安装、混凝土的浇筑及养生、测量监控等方面人手,介绍了S226海滨大桥