基于数字寻址的指挥关系树结构化存储与快速处理方法技术

技术编号:7446766 阅读:244 留言:0更新日期:2012-06-20 20:04
本发明专利技术公开了一种基于数字寻址的指挥关系树结构化存储与快速处理方法,包括以下步骤:步骤1,用包含节点位置信息的数字串来标示指挥关系树上各节点;步骤2,将每个节点的节点标识、数字串、步长和节点信息作为一条记录存储入数据库,用一张二维表存储一个树的结构信息;步骤3,对树的结构信息进行管理,包括读取树的结构信息,增加节点、删除节点。本发明专利技术不仅能够实现树型结构的快速存储和读取,同时根据标识了节点位置的数字串可以避免效率低下的遍历搜索,而且数字串的进制和步长可以灵活配置,提高了处理效率、灵活性和稳定性。

【技术实现步骤摘要】

本专利技术涉及一种数据存储方法,特别是一种面向指挥领域的树型结构的。
技术介绍
在指挥和管理领域,人员组织或物资目标等经常以树型结构来表现,并往往呈现出层次多、规模大,底层节点增删频繁等特点。同时,系统对树结构读取和节点操作的效率要求比较高,这就需要一种高效简便的数据持久化和处理方法。目前常用的方法是用一张二维表来存储树型结构信息,并在其基础上进行相关操作。基于二维表的树型结构存储,中国专利CN200310113660. 2公开了一种用二维表实现的树的存储、访问的方法。该方法将一个树型结构转化为二叉树结构,通过在二维表中记录每个节点的父节点,左右子节点来保存树的结构信息,在该专利所述领域中具有很好的效率。该方法应用于普遍领域时,会有这样几个缺点(1)需要将普通的树结构转化为二叉树进行存储,增加了一道处理工序;(2) 二维表中保存的是二叉树的结构信息,无法反映树的原始结构信息,如果需要从二维表中读取原始树结构,则还需要一次转化还原计算;(3)每次增加、删除叶子节点时,都会引起查找操作,同时还需要修改多条记录,增加了系统消耗。
技术实现思路
专利技术目的本专利技术所要解决的技术问题是针对现有技术的不足,提供一种。为了解决上述技术问题,本专利技术公开了一种,包括以下步骤步骤1,用包含节点位置信息的数字串来标示指挥关系树上各节点,所述节点包括一个根节点和一组子节点,一个树的每个节点的数字串唯一,一个树的所有节点的数字串组成的集合是有序集(集合里的任意两个数字串A和B,满足々>8或8>幻;根节点的数字串等于根节点的位置数,子节点的数字串由其父节点的数字串和节点本身的位置数两部分组成;节点的位置数表示其在同层节点中位置的一串数字,其长度称为该节点的步长;步骤2,将每个节点的节点标识、数字串、步长和节点信息(包括节点名称和节点附加属性)作为一条记录存储入数据库,用一张二维表存储一个树的结构信息; 步骤3,对树的结构信息进行管理,包括读取树的结构信息,增加节点、删除节点。本专利技术步骤1包括步骤11,确定数字串采用的进制k、根节点的数字串、根节点的步长n,根节点的步长为根节点的数字串长度,其中k和η为任意自然数;步骤12,根据当前层节点数量级,预设下层节点的数量级为进制k的m次方,则下层节点的步长为m+1,m为任意自然数;步骤13,取出当前要计算的节点,计算其位置数;计算方法是用待计算节点在同层节点中的位置i乘以进制数k;数字串的大小表示兄弟节点之间的先后顺序,越小的表示位置越前。步骤14,如果得到的位置数长度小于本层节点的步长,则在位置数左边补0直到位置数长度等于步长;如果位置数的长度超过步长,则将步长加1后返回步骤12 ;步骤15,将得到的位置数加在当前节点的父节点的数字串后,得到当前节点的数字串;步骤16,判断本层节点是否都已得到其数字串,如果是则进行步骤17,如果否则返回步骤13 ;步骤17,判断是否已经为树的最底层,如果是则结束,否则返回步骤12。本专利技术步骤2中,所述存储一个树的结构信息的二维表的字段描述如下权利要求1.一种,其特征在于,包括以下步骤步骤1,用包含节点位置信息的数字串来标示指挥关系树上各节点,所述节点包括一个根节点和一组子节点,一个树的每个节点的数字串唯一,一个树的所有节点的数字串组成的集合是有序集;根节点的数字串等于根节点的位置数,子节点的数字串由其父节点的数字串和节点本身的位置数两部分组成;节点的位置数表示其在同层节点中位置的一串数字,其长度称为该节点的步长;步骤2,将每个节点的节点标识、数字串、步长和节点信息作为一条记录存储入数据库, 用一张二维表存储一个树的结构信息;步骤3,对树的结构信息进行管理,包括读取树的结构信息,增加节点、删除节点。2.根据权利要求1所述的,其特征在于,步骤1包括步骤11,确定数字串采用的进制k、根节点的数字串、根节点的步长n,根节点的步长为根节点的数字串长度,其中k和η为任意自然数;步骤12,根据当前层节点数量级,预设下层节点的数量级为进制k的m次方,则下层节点的步长为m+1,m为任意自然数;步骤13,取出当前要计算的节点,计算其位置数;计算方法是用待计算节点在同层节点中的位置i乘以进制数k;步骤14,如果得到的位置数长度小于本层节点的步长,则在位置数左边补0直到位置数长度等于步长;如果位置数的长度超过步长,则将步长加1后返回步骤12 ;步骤15,将得到的位置数加在当前节点的父节点的数字串后,得到当前节点的数字串;步骤16,判断本层节点是否都已得到其数字串,如果是则进行步骤17,如果否则返回步骤13 ;步骤17,判断是否已经为树的最底层,如果是则结束,否则返回步骤12。3.如权利要求1所述的,其特征在于,步骤2中,所述存储一个树的结构信息的二维表的字段描述如下4.如权利要求1所述的,其特征在于,步骤3中从存储表中读取树的结构信息包括步骤311 将数据库中数字串长度最小的一条记录,作为树的根节点; 步骤312:将剩余记录中数字串长度最小的节点,其数字串去掉后面节点步长的数字,即为该节点的父节点的数字串,将每个叶子节点找到其对应的父节点插入树中,兄弟节点之间根据其数字串大小排序;步骤313 重复步骤312,直到所有记录都对应为树的叶子节点。5.如权利要求1所述的,其特征在于,步骤3中增加节点包括步骤321,确定要增加节点的父节点,得到父节点的数字串;步骤322,如果待增加节点有其他同层节点,则进入步骤325,否则进入步骤323 ;步骤323,为待增加节点指定一个步长,步长不小于3 ;步骤324,将进制k转为长度为步长的位置数,加到父节点的数字串后面,即为新节点的数字串,转入步骤329;步骤325,取同层节点的步长为该节点的步长;步骤326,如果待增加节点作为兄弟节点中最后一个加入树中,则进入步骤327,否则进入步骤328 ;步骤327,将该节点待插入的位置在兄弟节点中的序号乘以进制k,得到的结果转为长度等于步长的数字,即为该节点的位置数,加到父节点的数字串后面,即为新节点的数字串,进入步骤329 ;步骤328,该节点待插入的位置的左边一个节点为该节点的左兄弟节点,该节点待插入的位置的右边一个节点为该节点的右兄弟节点,取该节点左右兄弟节点的数字串的中间值或最接近中间值的整数,即为待增加节点的数字串,如果左右兄弟节点的数字串的差的绝对值小于1,则减小左边兄弟节点的数字串,如果左边无法减小,则增加右兄弟节点的数字串,然后再重新计算待增加节点的数字串;步骤329,将待增加节点的节点信息和数字串等存入二维表中,增加节点完成。6.如权利要求1所述的,其特征在于,步骤3中删除节点包括步骤331,取得要删除节点的数字串PosVal和数字串的长度η ;步骤332,从树型结构存储表中查询所有数字串前η位等于PosVal的节点,所述节点是待删除节点及其子孙节点;步骤333,删除所有查询到的节点。7.如权利要求2或4或5中任意一项所述的,其特征在于,所述父节点和子节点之间具有以下特点(1)父节点数字串是子节点数字串的左子串;(2)对任一节点N,若其数字串为PosVal,所有数字串是PosVal的左子串的节点,按数字串长度升序排列,组成了根节点到节点N的路径。全文摘要本专利技术公开了一种本文档来自技高网...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:彭向阳吴振锋高翔
申请(专利权)人:中国电子科技集团公司第二十八研究所
类型:发明
国别省市:

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

1
相关领域技术