使用储存信息的b树来方便对储存在b树的叶中的元素的位置访问。构造b树使得对于每一非叶层值,有一个计数位于其直接左边,并有一个值在其直接右边。这些左右计数指示位于该值的直接左边和右边的子树的叶中的叶层值的个数。左右计数用来确定搜索特定位置时下行b树所采用的路径。计数也可以用来确定b树的叶层中的值的总数。
【技术实现步骤摘要】
本专利技术通常涉及数据处理,尤其涉及b树中的元素的位置访问。
技术介绍
平衡树(b树)是一种经常用来以已排序的顺序储存数据的数据结构。B树尤其适用于通常需要以已排序的顺序访问大量数据的数据库操作。使用b树来储存数据允许方便地以已排序的顺序来检索b树中的数据。也可以在数据项已排序的顺序内在顺序位置的基础上(如在一组已排序的数据中的第n项)使用已排序的顺序来访问个别数据项。这类访问称为位置访问。使用b树的位置访问按照惯例包括计算或近似估计b树中的数据项的位置。例如,如果一个b树在其叶上储存了2n个不同的值,然后假定b树粗略地从左到右均匀分布数据,可以估计,第n个储存的项大约会在跨越b树的叶子层的中途出现。然而,当查找开始时,b树的实际大小以及跨越b树的实际数据分布通常是未知的。亦即,b树叶节点中值的精确数目,以及那些值分布的均匀程度可能是未知的。这样,如果对于所查找的项所有已知的是它是在已排序的顺序中的第n项,则仍然很难精确定位该项。而且,由于通常来说,确定一个已知的数据项是第n个数据项牵涉向下遍历该树至其叶,以确定在给定数据项之前有多少数据项,即使要确认估计有多精确也是很困难的。因此,需要一种没有以上缺点的使用b树的位置访问技术。专利技术概述依照本专利技术的b树配置为储存能够用来方便定位特定顺序位置的值或数据,或者实现其它位置访问操作的信息。构造b树使得每一非叶层节点中的索引值与左计数和右计数相关联。这些左右计数表示分别位于索引值直接左边和右边的子树中的叶层值的个数。左值和右值用来确定查找具有特定顺序位置的数据项时下行b树所采用的路径。查找位于b树中预定位置的元素的方法包括从左到右估计b树的根节点中的索引值。如果要查找的数据项的顺序位置小于或等于遇到的第一个左计数,则选择根的最左边的子树。反之,将左计数添加到运行计数中。如果要查找的数据项的顺序位置小于或等于运行计数和右计数的总和,则选择直接位于当前索引值右边的子树。然而,如果要查找的数据项的顺序位置大于以上所提到的总和,则将右计数添加到运行计数中,并从左到右考虑索引值,确定要查找的数据项的顺序位置是否小于或等于该新总和。重复这一将每一索引值的右计数添加到运行计数,并确定要查找的顺序位置是否小于或等于运行计数和当前索引值的右计数的总和的过程,直到找到符合那一条件的索引值。然后选择直接位于该索引值右边的子树。然后下行所选择的子树,并重复迭代这一过程(在迭代之间保留运行计数),直到遇到b树的叶层。与数据项相应的运行计数储存在当前节点的左边叶节点中。这样,通过从要查找的数据项的顺序位置中减去运行计数,并使用该差值来从当前叶层节点中选择特定的项,能够定位b树的叶层中的元素的预定位置。本专利技术的其它特性在下文描述。附图的简要描述结合附图考虑以下描述,能够更好地理解本专利技术的特点和优点,附图中附图说明图1说明了依照本专利技术一个示例实施例的合适的计算系统环境的示例,能够实现使用b树的位置访问的方法和系统;图2说明了一个示例性的b树结构;图3说明了依照本专利技术一个示例实施例的相对较大的项列表,其中,使用b树的位置访问来选择相对较小的项的组;图4说明了依照本专利技术一个示例实施例的包括左右叶层计数元素的b树;图5是依照本专利技术一个示例实施例的定位位于b树中预定位置的元素的示例进程的流程图;图6说明了依照本专利技术一个示例实施例的叶层根节点,该节点被分裂以插入有值元素并更新叶层计数元素;图7说明了依照本专利技术一个示例实施例将一个非叶层根节点分裂成两个节点以插入一个值并更新叶层计数元素; 图8说明了依照本专利技术一个示例实施例组合叶节点并更新叶层计数元素值;图9说明了依照本专利技术一个示例实施例将非叶节点与其左同胞组合来组成一个组合节点并更新叶层计数元素;图10说明了依照本专利技术一个示例实施例重新分布叶层节点的值并更新叶层计数元素;图11说明了依照本专利技术一个示例实施例重新分布非叶层节点的值并更新叶层计数元素;以及图12是依照本专利技术一个示例实施例更新b树中的叶层计数元素的值的流程图。说明性实施例的详细描述这里描述的平衡树(“b树”)元素的位置访问提供了基于b树索引的有效并精确的位置访问操作。在本专利技术的一个实施例中,计数信息储存在支持b树的数据结构中,能够用来有效地支持位置访问操作,如定位b树中的特定元素。对于b树中的每一非叶层索引值,计数储存在索引值的左边和右边。这些左右计数分别称为左叶计数(或“左计数”)和右叶计数(或“右计数”)。左叶计数元素指示直接位于索引值左边的子树的叶层中的数据项的个数。右叶计数元素表示b树的右子树的根节点,同时也表示右子树的叶层中的值的个数。对于给定节点允许通过检查该节点的那个子树包含具有特定顺序位置的数据项来确定计数信息,该计数信息可以协助位置访问。通过将根节点中的所有计数相加,计数信息也可以用来确定b树的叶层中有值元素的总数。合适计算系统环境的概述图1说明了一个合适的计算系统环境100的示例,能够实现采用b树的位置访问的系统和方法。该计算系统环境100仅是合适计算环境的一个示例,并非要局限使用范围或用于动态并个别控制显示元素的方法和系统的功能。也不应认为该计算环境100具有关于示例操作环境100中说明的一个组件或组件的组合的任何依赖或者需求。使用b树的位置访问的方法和系统可以在大量其它通用或专用计算系统环境或配置中操作。适合于动态并个别控制显示元素的方法和系统使用的熟知的计算系统、环境和/或配置包括但不限于,个人计算机、服务器计算机、手持式或膝上设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费类电子产品、网络PC、小型机、大型机、包含上述系统或设备的分布式计算环境等等。使用b树的位置访问的方法和系统可在计算机可读指令的普通上下文环境中描述,计算机可读指令如程序模块,由计算机执行。通常来说,程序模块包括例程、程序、对象、组件、数据结构等等,完成特定的任务或实现特定的抽象数据类型。使用b树的位置访问方法和系统也可以在分布式计算环境中实践,在分布式计算环境中,任务由通过通信网络或其它数据传输媒质连接的远程处理装置完成。在分布式计算环境中,程序模块和其它数据可以位于包括内存存储装置的本地和远程计算机存储媒质中。参考图1,实现使用b树的位置访问方法和系统的示例性系统包括以计算机110形式的通用计算装置。计算机110的组件包括但不限于,处理单元120、系统内存130以及将包括系统内存130的各种系统组件耦合到处理单元120的系统总线121。系统总线121可以是多种总线结构的任意一种,包括内存总线或内存控制器、外围总线以及使用任意各种总线结构的本地总线。作为示例但非限制,这类结构包括工业标准体系结构(ISA)总线、微通道结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线以及外设部件互连(PCI)总线(也称为Mezzanine总线)。计算机110通常包括各种计算机可读媒质。计算机可读媒质可以是任意计算机110可访问的可用媒质,包括易失和非易失媒质、可移动和不可移动媒质。作为示例但非局限,计算机可读媒质可以包括计算机存储媒质和通信媒质。计算机存储媒质包括在任何用于存储如计算机可读指令、数据结构、程序模块或其它数据的信息的方法或技术中实现的本文档来自技高网...
【技术保护点】
一种用于在平衡树(b树)中搜索位于预定顺序位置的元素的方法,其特征在于,所述方法包括:从左到右评估所述b树的根节点中的元素;根据指示每一子树中包含的叶层元素的个数的叶层计数,选择所述根节点的一个子树,并下行到所选择的子树的根节点;重复评估、选择和下行的行动,直到遇到所述b树的叶节点;并且依照以下两点在叶节点中定位所述预定顺序位置上的元素:所述叶节点内的元素的相对位置;以及所述叶节点之前的其它节点中储存的元素的总数。
【技术特征摘要】
...
【专利技术属性】
技术研发人员:SJ白利,
申请(专利权)人:微软公司,
类型:发明
国别省市:US[美国]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。