一种二叉查找树的方法及系统技术方案

技术编号:20724709 阅读:41 留言:0更新日期:2019-03-30 17:39
本发明专利技术的技术方案包括一种二叉查找树的方法及系统,用于实现:S1,将待分析数据数据划分为多个数据组;S2,为划分的多个数据转换为对应的多个子SBT树;S3,将多个子SBT数合并为一个SBT树。本发明专利技术的有益效果为:时间复杂度小,运行效率高,方便用于人工智能领域中处理超大规模数据的快速有序检索。

【技术实现步骤摘要】
一种二叉查找树的方法及系统
本专利技术涉及一种二叉查找树的方法及系统,属于计算机领域。
技术介绍
在众多超大规模的数据检索与分析的应用场景中,仍依赖有序的数据才能实现快速检索。二叉排序树(BST:binarySortTree)又称二叉查找树,是结点排好序的二叉树,中序遍历BST则得到排序数据。由树的特性,二叉排序树还适用于动态生成,所以对数据不断扩大的情况很适用。设BST有N个结点,因为树的最大深度是N,最小深度是logN(为一个平衡的二叉树),所以排序的最坏情况是O(N2),最好情况是O(NlogN)。SBT(SizeBalancedTree)是由陈启峰提出的,是对BST方法的改进。这个方法是在用二叉排序树排序的过程中保持树的平衡,使得排序的时间代价总是O(NlogN)。所以该算法的重要思想是如何维护二叉排序树为平衡树。首先,要定义SBT,这里用到了树的大小的概念,树的大小是指:树中所有结点的个数。设根结点为T的树,树的大小记为s[T]。树T的一个结点t的右子树记为right[t],左子树记为left[t]。则SBT的每一个结点t都满足以下两个性质:性质a:s[right[t]]≥s[left[left[t]]],且s[right[t]]≥s[right[left[t]]]性质b:s[left[t]]≥s[right[right[t]]],且s[left[t]]≥s[left[right[t]]]s[L]≥s[C]且s[L]≥s[D],这里T、L、R为结点,A、B、C、D为子树。当插入或删除结点时,SBT树会不满足性质a和性质b,所以要用“旋转”操作维护SBT树。树的旋转操作是在二叉树中做子树调整的操作,每一次旋转不会影响该二叉树中序遍历的结果。树旋转包括左旋转和右旋转,两种旋转呈镜像,而且互为逆操作。在用旋转维护SBT树的性质时,用maintain操作来修复这棵树,即重新计算树的大小。设函数maintain(T)用于修复以T为根的SBT。调用maintain(T)的前提条件是T的子树都已经是SBT了。这里需要讨论的有4种情况。但由于性质a和性质b是对称的,这里仅讨论性质a的2种情况。情况1:若s[Left[Left[T]]>s[Right[T]]即s[A]>s[R],则(1)右旋转T,即rotate_right(T);(2)修复T的大小,即maintain(T)(3)修复L的大小,即maintain(L)。情况2:若s[right[left[t]]>s[right[t]]即s[B]>s[R],则(1)左旋转L子树(2)右旋转T(3)修复L的大小(4)修复T的大小(5)修复B的大小。SBT的主要操作有:insert(T,k);将k插入到树T中delete(T,k);将k插入到树T中find(T,k);在树T中查找k,找到则返回k结点,否则返回NULLmaintain(T,flag);修复T的大小,flag为情况1和情况2的判断标志right_rotate(T);右旋转树Tleft_rotate();左旋转树T因为SBT是平衡的,所以树的高度是logN。因为插入、删除操作都要先进行查找,而查找操作的时间复杂度是O(logN),所以SBT排序的时间复杂度是O(NlogN)。平衡二叉树以减少平均路径长度、平均查找时间的优化策略来避免树结构过度变形的二叉查找树优化形式。在众多超大规模的数据检索与分析的应用场景中,仍依赖有序的数据才能实现快速检索,在并发环境下如何高效实现超大规模的平衡树显得十分重要。
技术实现思路
本文提供了一种二叉查找树的方法及系统,用于在并发环境下高效实现超大规模平衡树的改进方法SizeBalancedTree是难以在海量数据的处理中建立一棵平衡树的,可以将海量数据分组,再用多路归并算法将各组合并为一个SBT。本专利技术的技术方案包括一种二叉查找树的方法,其特征在于,该方法包括:S1,将待分析数据数据划分为多个数据组;S2,为划分的多个数据转换为对应的多个子SBT树;S3,将多个子SBT数合并为一个SBT树。根据所述的二叉查找树的方法,其中待分析数据为具有大量节点的数据。根据所述的二叉查找树的方法,其中步骤S1具体包括:对于具有N个节点数的待分析数据,则将待分析数据划分为M个数据组,其中则每个组的结点数其中表示M为的上界。根据所述的二叉查找树的方法,其中数据组还包括:若被划分的数据组大小超过STB算法转换的阈值时,进一步对超过STB算法转换阈值的数据组执行划分直至所有数据组能够被STB算法转换。根据所述的二叉查找树的方法,其中步骤S3具体包括:S21,使用多路归并算法将任意划分的两个数据组合并为一个数据组;S22,循环执行步骤S21直至完成所有数据组的合并。根据所述的二叉查找树的方法,其中步骤S1具体包括:对比需要合并的两个数据组的节点数和关键码深度总和,其中两个数据组包括第一数据组合第二数据组;若其中第一数据组的节点数和关键码深度均大于第二数据组则将第二数据组插入第一数据组,否则将第一数据组插入第二数据组;同时更新上界。根据所述的二叉查找树的方法,其中方法还包括:其中数据组的节点数的计算包括使用关键码执行排序操作,进而确认节点数。根据所述的二叉查找树的方法,其中该方法还包括:其中关键码深度的计算及对比包括使用对比接口将数据组的多个关键码进行求和并执行整形处理,进而执行对比。根据所述的二叉查找树的方法,其中该方法还包括:每执行一次数据组的插入、删除及查找时,检查合并后STB树是否满足STB条件,若不满足则对执行插入、删除及查找操作的STB树进行维护使其满足STB条件。本专利技术的技术方案还包括一种用于任意所述方法的二叉查找树的模块,系统包括:划分模块,用于将待分析数据数据划分为多个数据组;转换模块,用于为划分的多个数据转换为对应的多个子SBT树;合并模块,用于将多个子SBT数合并为一个SBT树。本专利技术的有益效果为:时间复杂度小,运行效率高,方便用于人工智能领域中处理超大规模数据的快速有序检索。附图说明图1所示为根据本专利技术实施方式的总体流程图;图2所示为根据本专利技术实施方式的STB比较图;图3a所示为根据本专利技术实施方式的有序值结点试验结果示意图;图3b所示为根据本专利技术实施方式的随机值结点试验结果示意图。具体实施方式为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本专利技术进行详细描述。本专利技术的一种二叉查找树的方法及系统适用于本算法适用于人工智能领域中处理超大规模数据的快速有序检索的是用场景。图1所示为根据本专利技术实施方式的总体流程图。S1,将待分析数据数据划分为多个数据组;S2,为划分的多个数据转换为对应的多个子SBT树;S3,将多个子SBT数合并为一个SBT树。对于图1,本专利技术提供了比较具体得实施方案,具体如下:如果是海量结点数据,SBT是难以建立一棵SBT,给出一个改进SBT的算法,将海量数据分组,再用多路归并算法将各组合并为一个SBT。设结点数为N,分组个数M为(取根号N的上界),则每个组的结点数n=N/M。以下给出两个SBT的归并算法。设两个SBT分别为T1和T2,key(T)表示T结点的关键码值,depth(k,T)表示关键码k在树T中的深度值本文档来自技高网
...

【技术保护点】
1.一种二叉查找树的方法,其特征在于,该方法包括:S1,将待分析数据数据划分为多个数据组;S2,为划分的多个数据转换为对应的多个子SBT树;S3,将多个子SBT数合并为一个SBT树。

【技术特征摘要】
1.一种二叉查找树的方法,其特征在于,该方法包括:S1,将待分析数据数据划分为多个数据组;S2,为划分的多个数据转换为对应的多个子SBT树;S3,将多个子SBT数合并为一个SBT树。2.根据权利要求1所述的二叉查找树的方法,其特征在于,所述待分析数据为具有大量节点的数据。3.根据权利要求1所述的二叉查找树的方法,其特征在于,所述步骤S1具体包括:对于具有N个节点数的待分析数据,则将待分析数据划分为M个数据组,其中则每个组的结点数其中表示M为的上界。4.根据权利要求3所述的二叉查找树的方法,其特征在于,所述数据组还包括:若被划分的数据组大小超过STB算法转换的阈值时,进一步对超过STB算法转换阈值的数据组执行划分直至所有数据组能够被STB算法转换。5.根据权利要求1所述的二叉查找树的方法,其特征在于,所述步骤S3具体包括:S21,使用多路归并算法将任意划分的两个数据组合并为一个数据组;S22,循环执行步骤S21直至完成所有数据组的合并。6.根据权利要求5所述的二叉查找树的方法,其特征在于,所述步骤S1具体包括:对比需要合并的两个数据组的节点数...

【专利技术属性】
技术研发人员:杨忠明李威蒋小波余君
申请(专利权)人:广东科学技术职业学院
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1