一种树形结构中数据的处理方法和系统的制作方法

文档序号:6377390阅读:291来源:国知局
专利名称:一种树形结构中数据的处理方法和系统的制作方法
技术领域
本发明涉及计算机应用领域,尤其涉及一种树形结构中数据的处理方法和系统。
背景技术
在各种基于关系数据库的应用系统开发中,我们往往需要存储树型结构的数据,而很多时候我们需要用到多个树形结构的模型,目前针对单一树形结构有很多流行的方法,如邻接列表模型(The Adjacency List Model)、左右值编码法等,在此基础上也有很多人针对不同的需求做了相应的改进,但总是在某些方面存在的各种各样的缺陷,下面分别以这两种存储方法为例进行说明。首先,邻接列表模型(The Adjacency List Model)在大多数编程语言中,他运行很慢,效率很差。这主要是“递归”造成的,每次查询节点都要访问数据库。每次数据库查 询都要花费一些时间,这让函数处理庞大的树时会十分慢;造成这个函数不是太快的第二个原因可能是使用的语言。不像Lisp这类语言,大多数语言不是针对递归函数设计的。对于每个节点,函数都要调用他自己,产生新的实例。于一个5层的树,你可能同时要运行5个函数副本。对于每个函数都要占用一块内存并且需要一定的时间初始化,这样处理大树时递归就很慢了。图I为现有技术中采用邻接列表管理树形结构的示意图。其次,左右值编码法按照先序遍历的次序进行编号,在消除递归的前提下实现了无限分级,而且查询条件是基于整型数字比较的,效率很高。可以进行先序列表,添加,修改,删除,同层平移等常规操作,基本满足需求。但是经过仔细研究这种方法也有很大的缺点由于这种左右值编码的方式和常见的阿拉伯数字直观排序不同,再加上节点在树中的层次,顺序不能直观显示出来,而必须通过简单的公式计算后得到,需要花费一定的时间对其数学模型进行深入理解。而且,采用该方案编写相关存储过程,新增,删除,同层平移节点需要对整个树进行查询修改,由此导致的代码复杂度,耦合度较高,修改维护的风险较高。图2为现有技术中采用左右值编码法进行树形结构管理的示意图。以上两种方法都不是针对多个树形结构的存储,对多个树形结构的处理能力相当有限。那么理想中的树型结构应具备哪些特点呢?数据存储冗余小、直观性强;适用于多个树形结构的情况;方便返回整个树型结构数据;可以很轻松的返回某一子树(方便分层加载);快整获以某节点的祖谱路径;插入、删除、移动节点效率高等等。

发明内容
本发明提供一种树形结构中数据的处理方法和系统,要解决的技术问题是如何提高数据处理的高效性与可靠性。为解决上述技术问题,本发明提供了如下技术方案一种树形结构中数据的处理方法,所有树形结构的根节点以递增的数字进行编号,其中每个树形结构的根节点为第一级,深度为i的叶子节点为第i+Ι级,其中i为大于或等于2的整数,其中同一树形结构中深度为i的节点中同属于深度为i-Ι的节点的多个节点以递增的数字进行编号,且树形结构上的每个节点配置有一个序号字段,其中一个节点的序号由该节点的全部父节点在各自深度的编号按照深度从小到大的顺序排序而成,其中两个父节点的编号通过一预先设置的符号隔开,其中采用顺序存储的方式将树形结构的所有节点存储在数据库中;根据节点的编号对树形结构的所有节点对应的数据进行处理。优选的,所述方法还具有如下特点所述预先设置的符号为下划线。优选的,所述方法还 具有如下特点根据节点的编号对树形结构的所有节点对应的数据进行处理,包括当对该树形结构进行增加节点操作时,且该节点为叶子节点,则按照该叶子节点的位置为该节点编号,并按照顺序存储方式存储到数据库;如果该节点不是叶子节点,则根据新增节点处的节点序号,依次修改该叶子节点的孩子节点的父节点域;当对该树形结构进行增加树操作时,则新增加一个根节点,并向该新增加的树中添加节点。优选的,所述方法还具有如下特点根据节点的编号对树形结构的所有节点对应的数据进行处理,包括当对该树形结构进行删除节点操作时,删除该节点以及所有编号以节点的编号开头的节点;当对该树形结构进行删除树操作时删除所有编号以此根节点的编号开头的节点。优选的,所述方法还具有如下特点根据节点的编号对树形结构的所有节点对应的数据进行处理,包括如果是对所有树的遍历,树形结构的所有节点采用顺序存储的方式存储在数据库中,仅进行一次查询,并将查询结果按照树形结构上的节点的编号排序输出;如果是对某棵树的遍历,查询以根节点的编号开头的所有数据记录;如果查询某一节点,根据查询内容直接查询;如果查询某一节点的父节点,查询编号字段为此节点的父节点域的节点;如果查询某一节点的孩子节点,查询编号字段为此节点的序号后面加上“”开头的数据记录。一种树形结构中数据的处理系统,所有树形结构的根节点以递增的数字进行编号,其中每个树形结构的根节点为第一级,深度为i的叶子节点为第i+Ι级,其中i为大于或等于2的整数,其中同一树形结构中深度为i的节点中同属于深度为i-Ι的节点的多个节点以递增的数字进行编号,且树形结构上的每个节点配置有一个序号字段,其中一个节点的序号由该节点的全部父节点在各自深度的编号按照深度从小到大的顺序排序而成,其中两个父节点的编号通过一预先设置的符号隔开,其中存储装置,用于采用顺序存储的方式将树形结构的所有节点存储在数据库中;查询装置,用于根据节点的编号对树形结构的所有节点对应的数据进行处理。优选的,所述系统还具有如下特点所述预先设置的符号为下划线。优选的,所述系统还具有如下特点所述处理装置包括第一增加模块,用于当对该树形结构进行增加节点操作时,且该节点为叶子节点,则按照该叶子节点的位置为该节点编号,并按照顺序存储方式存储到数据库;如果该节点不是叶子节点,则根据新增节点处的节点序号,依次修改该叶子节点的孩子节点的父节点域;第二增加模块,用于当对该树形结构进行增加树操作时,则新增加一个根节点,并向该新增加的树中添加节点。优选的,所述系统还具有如下特点所述处理装置包括第一删除模块,用于当对该树形结构进行删除节点操作时,删除该节点以及所有编号以节点的编号开头的节点;第二删除模块,用于当对该树形结构进行删除树操作时删除所有编号以此根节点的编号开头的节点。 优选的,所述系统还具有如下特点所述处理装置包括第一查询装置,用于如果是对所有树的遍历,树形结构的所有节点采用顺序存储的方式存储在数据库中,仅进行一次查询,并将查询结果按照树形结构上的节点的编号排序输出;第二查询装置,用于如果是对某棵树的遍历,查询以根节点的序号开头的所有数据记录;第三查询装置,用于如果查询某一节点,根据查询内容直接查询;第四查询装置,用于如果查询某一节点的父节点,查询编号字段为此节点的父节点域的节点;第五查询装置,用于如果查询某一节点的孩子节点,查询编号字段为此节点的序号后面加上“_”开头的数据记录。本发明提供的技术方案,应用在涉及多个树形结构的系统中可以方便的实现树形结构的定义、存储以及增删改查等常用操作,尤其适合在多个树形结构中查询某棵树的某个节点,类似的操作只需一个简单的查询即可,提高了数据处理的高效性与可靠性。


图I为现有技术中采用邻接列表管理树形结构的示意图;图2为现有技术中采用左右值编码法进行树形结构管理的示意图;图3为本发明提供的树形结构中数据的处理方法实施例的流程示意图;图4为本发明方法实施例中树形结构的示意图;图5为本发明提供的树形结构中数据的处理系统实施例的结构示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步的详细描述。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。图3为本发明提供的树形结构中数据的处理方法实施例的流程示意图。图3所示方法实施例中,所有树形结构的根节点以递增的数字进行编号,其中每个树形结构的根节点为第一级,深度为i的叶子节点为第i+Ι级,其中i为大于或等于2的整数,其中同一树形结构中深度为i的节点中同属于深度为i-ι的节点的多个节点以递增的数字进行编号,且树形结构上的每个节点配置有一个序号字段,其中一个节点的序号由该节点的全部父节点以及该节点在各自深度的编号按照深度从小到大的顺序排序而成,其中两个父节点的编号通过预先设置的符号隔开,其中步骤301、采用顺序存储的方式将树形结构的所有节点存储在数据库中;步骤302、根据节点的编号对树形结构的数据进行处理。本发明提供了的方法实施例,基于多个树形结构的数据表进行分级存储,以特定的命名规范采用顺序编号的形式,按照树形结构的深度进行分级存储,实现多个树形结构的数据在关系型数据库中的存储,与现有技术中调用各级函数进行查询不同,本实施例借助节点编号,明确节点在树形结构中的位置信息,方便对树形结构的管理。
具体来说,该属性结果能够提高对数据进行增、删、改、查操作的效率,特别是提高遍历整个树的效率应用在涉及多个树形结构的系统中可以方便的实现树形结构的定义、存储以及增删改查等常用操作,尤其适合在多个树形结构中查询某棵树的某个节点,类似的操作只需一个简单的查询即可,提高了数据处理的高效性与可靠性。下面对上述方法实施例作进一步说明图4为本发明方法实施例中树形结构的示意图。在上述方法实施例中的树形结构为N个,其中,N为大于或等于2的整数,其中N个树形结构的根节点可以依次排序为1,2,3,4......,N。在同一个树形结构里,根节点的深度为0,配置为第一级,而第二级即为第一层的叶子节点,其中深度为1,同理,可以推出,第i+Ι级为深度为i。同一深度的相同父节点的多个节点按照树形结构从左到右或者从右到左的顺序依次编号,例如,在深度为2的节点中有三个节点同属于深度为I的节点,那么这三个节点可以依次编号,而每个节点都有一个序号,该序号字段以特定的方式进行命名,命名方式采用数字加下划线的形式,下划线连接的是数字字段的组合,一个深度为η的节点的序号有η个下划线加n+1个数字字段组成,其中第P个数字字段为深度为P-I的父节点的编号。当然,实际应用中也可以采用其他符号进行,只要能够划分开两个数字字段即可。由上可以看出,以特定的命名规范采用顺序编号的形式,节点的数据按照顺序存储结构进行存储,实现按照树形结构的深度进行分级存储,实现多个树形结构的数据在关系型数据库中的存储,实现基于多个树形结构的数据表分级存储的效果。下面详细描述上述树形结构的运行及实施过程,主要分为3个大的步骤SI :分级树形结构的根节点为第一级,根节点的孩子节点为第二级,以此类推进行分级,一个深度为η的叶子节点为第n+1级;S2 :编号对每个节点设定一个序号字段并以特定的方式进行命名,命名方式采用数字加下划线的形式,下划线连接的是数字字段的组合,一个深度为η的节点的序号有η个下划线加n+1个数字字段组成;自根节点以后的所有节点的序号的最后一个下划线之前的部分为其父节点的序号,之后的部分为递增的序号;
S3:增、删、改、查操作增增加节点添加节点时若增加的为叶子节点,只要按规则编号顺序的存入数据库即可;若增加的不是叶子节点,以新增节点处的节点序号为新增的节点序号,依次修改其孩子节点的父节点域即可;增加新的树新增一个根节点;向树中添加节点。删删除节点删除某一节点A,删除所有编号以A节点的编号开头的节点即可;删除树删除所有编号以此根节点的编号开头的节点即可。 改读取该节点对应的数据,进行修改。查所有树的遍历树形结构的所有节点采用顺序存储的方式存储在数据库中,对此树形结构的数据进行遍历操作时只需一次查询取出所有的数据按序号排序即可;某棵树的遍历查询以根节点的序号开头的所有数据记录;查询某一节点直接根据查询内容查询即可查询某一节点的父节点查询编号字段为此节点的父节点域的节点即可查询某一节点的孩子节点查询编号字段为此节点的序号后面加上“开头的数据记录即可;通过上文所说的增、删、查可以看出,由于节点的编号体现了节点的位置信息,因此在进行节点的增删操作时,只要按照节点编号进行处理,就能查找该节点和该节点的父节点和孩子节点,进而进行相应处理,无需按照现有技术中的在每层调用不同函数进行处理,而是进行一次搜索即可找到对应的全部处理对象,简单方便;节点上所存储的数据是按照节点的编号顺序进行了顺序存储,即数据是按照树形结构进行分级存储的,对于查询某个节点在作为父节点时,其孩子节点的数据时,可以根据该父节点的编号确定其上存储的数据在数据库的存储层级,进而将该层级下属的全部数据按照顺序即可,查询简单方便。本发明提供了的方法实施例应用在涉及多个树形结构的系统中可以方便的实现树形结构的定义、存储以及增删改查等常用操作,尤其适合在多个树形结构中查询某棵树的某个节点,类似的操作只需一个简单的查询即可,提高了数据处理的高效性与可靠性。因此,本发明具有以下优点适用于多个树形结构的情况;各种查询操作可靠性强、效率高;序号编码设计结构清晰,能够直观的看出某节点所处的位置;消耗系统资源少,执行效率较高,可靠性强,非常适合涉及多个树形结构的中小型系统;可扩展性强,对节点序号稍加改造可以实现更多更强的控制功能。图5为本发明提供的树形结构中数据的处理系统实施例的结构示意图。结合图3所示的方法实施例,图5所示系统实施例包括所有树形结构的根节点以递增的数字进行编号,其中每个树形结构的根节点为第一级,深度为i的叶子节点为第i+Ι级,其中i为大于或等于2的整数,其中同一树形结构中深度为i的节点中同属于深度为i-Ι的节点的多个节点以递增的数字进行编号,且树形结构上的每个节点配置有一个序号字段,其中一个节点的序号由该节点的全部父节点在各自深度的编号按照深度从小到大的顺序排序而成,其中两个父节点的编号通过一预先设置的符号隔开,其中存储装置501,用于采用顺序存储的方式将树形结构的所有节点存储在数据库中;查询装置502,用于根据节点的编号对树形结构的所有节点对应的数据进行处理。其中,所述预先设置的符号为下划线。其中,所述处理装置包括第一增加模块,用于当对该树形结构进行增加节点操作时,且该节点为叶子节点,则按照该叶子节点的位置为该节点编号,并按照顺序存储方式存储到数据库;如果该节点 不是叶子节点,则根据新增节点处的节点序号,依次修改该叶子节点的孩子节点的父节点域;第二增加模块,用于当对该树形结构进行增加树操作时,则新增加一个根节点,并向该新增加的树中添加节点。其中,所述处理装置包括第一删除模块,用于当对该树形结构进行删除节点操作时,删除该节点以及所有编号以节点的编号开头的节点;第二删除模块,用于当对该树形结构进行删除树操作时删除所有编号以此根节点的编号开头的节点。其中,所述处理装置包括第一查询装置,用于如果是对所有树的遍历,树形结构的所有节点采用顺序存储的方式存储在数据库中,仅进行一次查询,并将查询结果按照树形结构上的节点的编号排序输出;第二查询装置,用于如果是对某棵树的遍历,查询以根节点的序号开头的所有数据记录;第三查询装置,用于如果查询某一节点,根据查询内容直接查询;第四查询装置,用于如果查询某一节点的父节点,查询编号字段为此节点的父节点域的节点;第五查询装置,用于如果查询某一节点的孩子节点,查询编号字段为此节点的序号后面加上“ ”开头的数据记录。本发明提供的系统实施例,应用在涉及多个树形结构的系统中可以方便的实现树形结构的定义、存储以及增删改查等常用操作,尤其适合在多个树形结构中查询某棵树的某个节点,类似的操作只需一个简单的查询即可,提高了数据处理的高效性与可靠性。以上所述,仅为本发明的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求所述的保护范围为准。
权利要求
1.一种树形结构中数据的处理方法,其特征在于,所有树形结构的根节点以递增的数字进行编号,其中每个 树形结构的根节点为第一级,深度为i的叶子节点为第i+Ι级,其中i为大于或等于2的整数,其中同一树形结构中深度为i的节点中同属于深度为i-Ι的节点的多个节点以递增的数字进行编号,且树形结构上的每个节点配置有一个序号字段,其中一个节点的序号由该节点的全部父节点在各自深度的编号按照深度从小到大的顺序排序而成,其中两个父节点的编号通过一预先设置的符号隔开,其中 采用顺序存储的方式将树形结构的所有节点存储在数据库中; 根据节点的编号对树形结构的所有节点对应的数据进行处理。
2.根据权利要求I所述的方法,其特征在于,所述预先设置的符号为下划线。
3.根据权利要求I所述的方法,其特征在于,根据节点的编号对树形结构的所有节点对应的数据进行处理,包括 当对该树形结构进行增加节点操作时,且该节点为叶子节点,则按照该叶子节点的位置为该节点编号,并按照顺序存储方式存储到数据库;如果该节点不是叶子节点,则根据新增节点处的节点序号,依次修改该叶子节点的孩子节点的父节点域; 当对该树形结构进行增加树操作时,则新增加一个根节点,并向该新增加的树中添加节点。
4.根据权利要求I所述的方法,其特征在于,根据节点的编号对树形结构的所有节点对应的数据进行处理,包括 当对该树形结构进行删除节点操作时,删除该节点以及所有编号以节点的编号开头的节点; 当对该树形结构进行删除树操作时删除所有编号以此根节点的编号开头的节点。
5.根据权利要求I所述的方法,其特征在于,根据节点的编号对树形结构的所有节点对应的数据进行处理,包括 如果是对所有树的遍历,树形结构的所有节点采用顺序存储的方式存储在数据库中,仅进行一次查询,并将查询结果按照树形结构上的节点的编号排序输出; 如果是对某棵树的遍历,查询以根节点的编号开头的所有数据记录; 如果查询某一节点,根据查询内容直接查询; 如果查询某一节点的父节点,查询编号字段为此节点的父节点域的节点; 如果查询某一节点的孩子节点,查询编号字段为此节点的序号后面加上“ ”开头的数据记录。
6.一种树形结构中数据的处理系统,其特征在于,所有树形结构的根节点以递增的数字进行编号,其中每个树形结构的根节点为第一级,深度为i的叶子节点为第i+Ι级,其中i为大于或等于2的整数,其中同一树形结构中深度为i的节点中同属于深度为i-Ι的节点的多个节点以递增的数字进行编号,且树形结构上的每个节点配置有一个序号字段,其中一个节点的序号由该节点的全部父节点在各自深度的编号按照深度从小到大的顺序排序而成,其中两个父节点的编号通过一预先设置的符号隔开,其中 存储装置,用于采用顺序存储的方式将树形结构的所有节点存储在数据库中; 查询装置,用于根据节点的编号对树形结构的所有节点对应的数据进行处理。
7.根据权利要求6所述的系统,其特征在于,所述预先设置的符号为下划线。
8.根据权利要求6所述的系统,其特征在于,所述处理装置包括 第一增加模块,用于当对该树形结构进行增加节点操作时,且该节点为叶子节点,则按照该叶子节点的位置为该节点编号,并按照顺序存储方式存储到数据库;如果该节点不是叶子节点,则根据新增节点处的节点序号,依次修改该叶子节点的孩子节点的父节点域;第二增加模块,用于当对该树形结构进行增加树操作时,则新增加一个根节点,并向该新增加的树中添加节点。
9.根据权利要求6所述的系统,其特征在于,所述处理装置包括 第一删除模块,用于当对该树形结构进行删除节点操作时,删除该节点以及所有编号以节点的编号开头的节点; 第二删除模块,用于当对该树形结构进行删除树操作时删除所有编号以此根节点的编号开头的节点。
10.根据权利要求6所述的系统,其特征在于,所述处理装置包括 第一查询装置,用于如果是对所有树的遍历,树形结构的所有节点采用顺序存储的方式存储在数据库中,仅进行一次查询,并将查询结果按照树形结构上的节点的编号排序输出; 第二查询装置,用于如果是对某棵树的遍历,查询以根节点的序号开头的所有数据记录; 第三查询装置,用于如果查询某一节点,根据查询内容直接查询; 第四查询装置,用于如果查询某一节点的父节点,查询编号字段为此节点的父节点域的节点; 第五查询装置,用于如果查询某一节点的孩子节点,查询编号字段为此节点的序号后面加上“ ”开头的数据记录。
全文摘要
本发明提供一种树形结构中数据的处理方法和系统。所述方法,包括所有树形结构的根节点以递增的数字进行编号,其中每个树形结构的根节点为第一级,深度为i的叶子节点为第i+1级,其中i为大于或等于2的整数,其中同一树形结构中深度为i的节点中同属于深度为i-1的节点的多个节点以递增的数字进行编号,且树形结构上的每个节点配置有一个序号字段,其中一个节点的序号由该节点的全部父节点在各自深度的编号按照深度从小到大的顺序排序而成,其中两个父节点的编号通过一预先设置的符号隔开,其中采用顺序存储的方式将树形结构的所有节点存储在数据库中;根据节点的编号对树形结构的所有节点对应的数据进行处理。
文档编号G06F17/30GK102867059SQ201210350548
公开日2013年1月9日 申请日期2012年9月19日 优先权日2012年9月19日
发明者付正全, 刘成平, 刘正伟 申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1