[发明专利]一种树形结构中数据的处理方法和系统无效
申请号: | 201210350548.X | 申请日: | 2012-09-19 |
公开(公告)号: | CN102867059A | 公开(公告)日: | 2013-01-09 |
发明(设计)人: | 付正全;刘成平;刘正伟 | 申请(专利权)人: | 浪潮(北京)电子信息产业有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 栗若木;曲鹏 |
地址: | 100085 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 树形 结构 数据 处理 方法 系统 | ||
技术领域
本发明涉及计算机应用领域,尤其涉及一种树形结构中数据的处理方法和系统。
背景技术
在各种基于关系数据库的应用系统开发中,我们往往需要存储树型结构的数据,而很多时候我们需要用到多个树形结构的模型,目前针对单一树形结构有很多流行的方法,如邻接列表模型(The Adjacency List Model)、左右值编码法等,在此基础上也有很多人针对不同的需求做了相应的改进,但总是在某些方面存在的各种各样的缺陷,下面分别以这两种存储方法为例进行说明。
首先,邻接列表模型(The Adjacency List Model)在大多数编程语言中,他运行很慢,效率很差。这主要是“递归”造成的,每次查询节点都要访问数据库。每次数据库查询都要花费一些时间,这让函数处理庞大的树时会十分慢;造成这个函数不是太快的第二个原因可能是使用的语言。不像Lisp这类语言,大多数语言不是针对递归函数设计的。对于每个节点,函数都要调用他自己,产生新的实例。于一个5层的树,你可能同时要运行5个函数副本。对于每个函数都要占用一块内存并且需要一定的时间初始化,这样处理大树时递归就很慢了。图1为现有技术中采用邻接列表管理树形结构的示意图。
其次,左右值编码法按照先序遍历的次序进行编号,在消除递归的前提下实现了无限分级,而且查询条件是基于整型数字比较的,效率很高。可以进行先序列表,添加,修改,删除,同层平移等常规操作,基本满足需求。但是经过仔细研究这种方法也有很大的缺点:由于这种左右值编码的方式和常见的阿拉伯数字直观排序不同,再加上节点在树中的层次,顺序不能直观显示出来,而必须通过简单的公式计算后得到,需要花费一定的时间对其数学模型进行深入理解。而且,采用该方案编写相关存储过程,新增,删除,同层平移节点需要对整个树进行查询修改,由此导致的代码复杂度,耦合度较高,修改维护的风险较高。图2为现有技术中采用左右值编码法进行树形结构管理的示意图。
以上两种方法都不是针对多个树形结构的存储,对多个树形结构的处理能力相当有限。那么理想中的树型结构应具备哪些特点呢?数据存储冗余小、直观性强;适用于多个树形结构的情况;方便返回整个树型结构数据;可以很轻松的返回某一子树(方便分层加载);快整获以某节点的祖谱路径;插入、删除、移动节点效率高等等。
发明内容
本发明提供一种树形结构中数据的处理方法和系统,要解决的技术问题是如何提高数据处理的高效性与可靠性。
为解决上述技术问题,本发明提供了如下技术方案:
一种树形结构中数据的处理方法,所有树形结构的根节点以递增的数字进行编号,其中每个树形结构的根节点为第一级,深度为i的叶子节点为第i+1级,其中i为大于或等于2的整数,其中同一树形结构中深度为i的节点中同属于深度为i-1的节点的多个节点以递增的数字进行编号,且树形结构上的每个节点配置有一个序号字段,其中一个节点的序号由该节点的全部父节点在各自深度的编号按照深度从小到大的顺序排序而成,其中两个父节点的编号通过一预先设置的符号隔开,其中:
采用顺序存储的方式将树形结构的所有节点存储在数据库中;
根据节点的编号对树形结构的所有节点对应的数据进行处理。
优选的,所述方法还具有如下特点:所述预先设置的符号为下划线。
优选的,所述方法还具有如下特点:根据节点的编号对树形结构的所有节点对应的数据进行处理,包括:
当对该树形结构进行增加节点操作时,且该节点为叶子节点,则按照该叶子节点的位置为该节点编号,并按照顺序存储方式存储到数据库;如果该节点不是叶子节点,则根据新增节点处的节点序号,依次修改该叶子节点的孩子节点的父节点域;
当对该树形结构进行增加树操作时,则新增加一个根节点,并向该新增加的树中添加节点。
优选的,所述方法还具有如下特点:根据节点的编号对树形结构的所有节点对应的数据进行处理,包括:
当对该树形结构进行删除节点操作时,删除该节点以及所有编号以节点的编号开头的节点;
当对该树形结构进行删除树操作时:删除所有编号以此根节点的编号开头的节点。
优选的,所述方法还具有如下特点:根据节点的编号对树形结构的所有节点对应的数据进行处理,包括:
如果是对所有树的遍历,树形结构的所有节点采用顺序存储的方式存储在数据库中,仅进行一次查询,并将查询结果按照树形结构上的节点的编号排序输出;
如果是对某棵树的遍历,查询以根节点的编号开头的所有数据记录;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮(北京)电子信息产业有限公司,未经浪潮(北京)电子信息产业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210350548.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:移动终端和数据保护方法
- 下一篇:一种三维网页的显示装置及其应用
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置