树形数据结构及其节点批量移动方法技术

技术编号:38716945 阅读:10 留言:0更新日期:2023-09-08 14:59
本发明专利技术属于数据处理技术领域,具体涉及一种树形数据结构及其节点批量移动方法。其中,树形数据结构,包括若干节点,节点包括父节点ID字段、节点级别字段和排序值字段,排序值字段的数据类型为N进制的字符串类型;树形数据结构是以根节点开始,根据预设的排序值字段的排序规则,按层级分别对每一层的节点的排序值字段进行赋值,同一层中相邻两个节点的排序值字段相差N/2,不同层的两个节点允许存在相同的排序值字段。采用本发明专利技术的树形数据结构后,当节点位置变更时,只需要更改当前节点的排序值和上级节点的连接(PID),无需修改其他关联节点,这种方式可以显著提高算法的效率。这种方式可以显著提高算法的效率。这种方式可以显著提高算法的效率。

【技术实现步骤摘要】
树形数据结构及其节点批量移动方法


[0001][0002]本专利技术属于数据处理
,具体涉及一种树形数据结构及其节点批量移动方法。

技术介绍

[0003]现有的树形数据结构其节点通常包括节点ID字段、节点名称字段、父节点ID字段等的数据结构,其无法实现较好的排序功能。因此,支持排序的树形数据结构如图1所示,在定义数节点的数据结构时,包含了节点级别字段和一个排序值字段,节点级别字段表示当前节点相对于根节点的层级关系,排序值字段表示当前节点在树形数据结构中的绝对位置。节点级别字段和排序值字段通常采用整形类型,其值可以为顺序的自然数。当要对树形数据结构进行排序的实施时,只需按排序值字段进行升序或降序排序即可。
[0004]虽然该技术在渲染节点时表现良好,但在修改节点位置时却存在问题。如图2所示,某树形数据结构中,将节点A至节点D的排序值字段分别定义为1至4。如果需要将节点D移动到节点A和B之间,需要进行以下步骤:1、找到节点A和节点D之间的所有节点,例如节点B和节点C。
[0005]2、修改节点B和节点C的排序值(例如此例子中,需要将它们的排序值加1)。
[0006]3、修改节点D的排序值为原来节点B的排序值,或者修改为节点A的排序值加1。
[0007]在这个过程中,存在以下问题:首先,如果节点A和节点D之间有大量的节点,那么修改它们之间节点的排序值将是一项资源消耗很大的操作。
[0008]其次,在多个用户同时进行并发操作的情况下,需要对操作进行加锁。如果步骤1的执行非常耗时,可能会导致整个系统被锁死。
[0009]最后,当进行跨节点层级进行移动的时候,处理逻辑会更复杂。

技术实现思路

[0010]本专利技术针对上述技术问题,目的在于提供一种树形数据结构及其节点批量移动方法。
[0011]为了解决上述问题,根据本专利技术的一个方面,提供了一种树形数据结构,包括若干节点,所述节点包括父节点ID字段、节点级别字段和排序值字段,所述排序值字段的数据类型为N进制的字符串类型;所述树形数据结构是以根节点开始,根据预设的排序值字段的排序规则,按层级分别对每一层的节点的排序值字段进行赋值,同一层中相邻两个节点的排序值字段相差N/2,不同层的两个节点允许存在相同的排序值字段。
[0012]可选的,所述树形数据结构中,同一层节点的首节点的排序值字段为预设排序值。
[0013]为了解决上述问题,根据本专利技术的另一个方面,提供了一种基于本专利技术上述所述
树形数据结构的节点批量移动方法,包括:获取目标位置的上下两个节点的排序值,取上下两个节点的排序值之间的值,得到待移动节点新的排序值并修改,完成移动。
[0014]可选的,采用中位数算法取上下两个节点的排序值之间的值,所述中位数算法为:取上下两个节点的排序值之差除以2取整,得到待移动节点新的排序值并修改。
[0015]可选的,当取上下两个节点的排序值之差除以2取整,得到的值为0时,则修改待移动节点新的排序值字段的字符串长度,修改方法为:对N/2取整作为待增加的目标字符,根据排序值字段的排序规则,在上个节点或下个节点的排序值字段后增加所述目标字符,得到待移动节点新的排序值并修改。
[0016]可选的,获取目标位置的上下两个节点的排序值时,当不存在目标位置的上个节点,则认为待移动节点移动到当前层的首节点,此时采用首位排序值生成算法得到待移动节点新的排序值并修改,所述首位排序值生成算法为:对N/2取整作为目标值,根据排序值字段的排序规则,对下个节点的排序值字段减或加所述目标值,得到待移动节点新的排序值并修改。
[0017]可选的,获取目标位置的上下两个节点的排序值时,当不存在目标位置的下个节点,则认为待移动节点移动到当前层的尾结点,此时采用末尾排序值生成算法得到待移动节点新的排序值并修改,所述末尾排序值生成算法为:对N/2取整作为目标值,根据排序值字段的排序规则,对上个节点的排序值字段加或减所述目标值,得到待移动节点新的排序值并修改。
[0018]可选的,在对排序值字段加或减所述目标值时,若最右位大于排序值字段的最大值,则按N进制规则向前进位,若最右位小于排序值字段的最小值,则按N进制规则向前借位。
[0019]可选的,得到待移动节点新的排序值并修改之前或之后,还进行:判断目标位置的父节点ID字段与待移动节点的父节点ID字段是否相同,若不同,则将待移动节点的父节点ID字段修改为目标位置的父节点ID字段。
[0020]可选的,得到待移动节点新的排序值并修改之后判断当前层的首节点是否达到预设重排值,若到达,则触发重新排序算法,所述重新排序算法为:锁定当前层,获取当前层的所有节点,根据预设的排序值字段的排序规则,对当前层的所有节点的排序值字段重新进行赋值,相邻两个节点的排序值字段相差N/2。
[0021]有益效果:在传统的树形数据结构中,当某个节点的位置发生变化时,需要重新调整该节点的子树,以确保整个树的结构仍然是正确的。这个过程需要遍历整个子树,并且需要对每个节点进行重新排序,这会导致算法的效率大大降低。采用本专利技术的树形数据结构后,当节点位置变更时,只需要更改当前节点的排序值和上级节点的连接(PID),无需修改其他关联节点,这种方式可以显著提高算法的效率。尤其是在数据量较大的情况下,可以大大减少算法的时间复杂度,提高算法的性能和效率。
附图说明
[0022]图1为现有技术中树形数据结构的一种节点示意图;图2为现有技术中一种节点移动过程图;
图3为本专利技术树形数据结构的一种节点示意图;图4为一种字符串大小原理图;图5为本专利技术实施例1至实施例3的一种节点移动过程图。
实施方式
[0023]以下将结合附图对本专利技术的较佳实施例进行详细说明,以便更清楚理解本专利技术的目的、特点和优点。应理解的是,附图所示的实施例并不是对本专利技术范围的限制,而只是为了说明本专利技术技术方案的实质精神。
[0024]在下文的描述中,出于说明各种公开的实施例的目的阐述了某些具体细节以提供对各种公开实施例的透彻理解。但是,相关领域技术人员将认识到可在无这些具体细节中的一个或多个细节的情况下来实践实施例。在其它情形下,与本申请相关联的熟知的装置、结构和技术可能并未详细地示出或描述从而避免不必要地混淆实施例的描述。
[0025]在整个说明书中对“一个实施例”或“一实施例”的提及表示结合实施例所描述的特定特点、结构或特征包括于至少一个实施例中。因此,在整个说明书的各个位置“在一个实施例中”或“在一实施例”中的出现无需全都指相同实施例。另外,特定特点、结构或特征可在一个或多个实施例中以任何方式组合。
[0026]在以下描述中,为了清楚展示本专利技术的结构及工作方式,将借助诸多方向性词语进行描述,但是应当将“前”、“后”、“左”、“右”、“外”、“内”、“向外”、“向内”、“上”、“下”等词语理解为方便用语,而不应当理解为限定性词语。
[0027]树形数据结构是一类重要的非线性数本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种树形数据结构,包括若干节点,所述节点包括父节点ID字段、节点级别字段和排序值字段,其特征在于,所述排序值字段的数据类型为N进制的字符串类型;所述树形数据结构是以根节点开始,根据预设的排序值字段的排序规则,按层级分别对每一层的节点的排序值字段进行赋值,同一层中相邻两个节点的排序值字段相差N/2,不同层的两个节点允许存在相同的排序值字段。2.如权利要求1所述的树形数据结构,其特征在于,所述树形数据结构中,同一层节点的首节点的排序值字段为预设排序值。3.一种基于权利要求1或2所述的树形数据结构的节点批量移动方法,其特征在于,包括:获取目标位置的上下两个节点的排序值,取上下两个节点的排序值之间的值,得到待移动节点新的排序值并修改,完成移动。4.如权利要求3所述的树形数据结构的节点批量移动方法,其特征在于,采用中位数算法取上下两个节点的排序值之间的值,所述中位数算法为:取上下两个节点的排序值之差除以2取整,得到待移动节点新的排序值并修改。5.如权利要求4所述的树形数据结构的节点批量移动方法,其特征在于,当取上下两个节点的排序值之差除以2取整,得到的值为0时,则修改待移动节点新的排序值字段的字符串长度,修改方法为:对N/2取整作为待增加的目标字符,根据排序值字段的排序规则,在上个节点或下个节点的排序值字段后增加所述目标字符,得到待移动节点新的排序值并修改。6.如权利要求3所述的树形数据结构的节点批量移动方法,其特征在于,获取目标位置的上下两个节点的排序值时,当不存在目标位置的上个节点,则认为待移动节点移动到当前层的首节点,此时采用首位排序值生成算法得到待移动节点新的...

【专利技术属性】
技术研发人员:朱志刚
申请(专利权)人:智研汇杭州科技有限公司
类型:发明
国别省市:

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

1