树形节点排序方法和树形节点排序装置制造方法及图纸

技术编号:10543405 阅读:140 留言:0更新日期:2014-10-15 18:18
本发明专利技术提出了一种树形节点排序方法和树形节点排序装置,其中,树形节点排序方法包括:根据菜单列表数据中菜单的编号对所述菜单列表数据进行排序;根据所述菜单列表数据中菜单的父标识与菜单的所述编号对排序后的所述菜单列表数据进行重新排序;将重新排序后的所述菜单列表数据转化为树形结构数据,以根据所述树形结构数据检索对应的父节点和子节点;根据所述父节点与所述子节点对所述树形结构数据逐层展开,并将展开后的数据转化为目标菜单列表数据。通过发明专利技术的本技术方案,可以大大地缩短树形结构数据的排序时间,同时减少了递归程序的应用,极大地加快了排序速度,并有效地提高用户的排序体验。

【技术实现步骤摘要】
【专利摘要】本专利技术提出了一种树形节点排序方法和树形节点排序装置,其中,树形节点排序方法包括:根据菜单列表数据中菜单的编号对所述菜单列表数据进行排序;根据所述菜单列表数据中菜单的父标识与菜单的所述编号对排序后的所述菜单列表数据进行重新排序;将重新排序后的所述菜单列表数据转化为树形结构数据,以根据所述树形结构数据检索对应的父节点和子节点;根据所述父节点与所述子节点对所述树形结构数据逐层展开,并将展开后的数据转化为目标菜单列表数据。通过专利技术的本技术方案,可以大大地缩短树形结构数据的排序时间,同时减少了递归程序的应用,极大地加快了排序速度,并有效地提高用户的排序体验。【专利说明】树形节点排序方法和树形节点排序装置
本专利技术涉及排序
,具体而言,涉及一种树形节点排序方法和一种树形节 点排序装置。
技术介绍
在实际应用中,树形数据结构的使用是十分广泛的。例如,中国军队的三三编制就 是一种典型的树形数据结构:三个连为一个团,三个团为一个师。又例如,大多数公司的组 织结构也是树形数据结构:一个项目经理带领若干项目成员,一个项目主管又带领若干个 项目经理。 目前,在使用数据库进行数据存储时,对于具有树形存储结构的数据,通常多采用 父子节点的存储方法即每一个节点都存在一 ID标识及父标识SupID,而目前对具有树形存 储结构的数据的排序很慢。下面将以菜单为例,说明目前的树形存储结构的数据排序方法, 目前常用的排序方法是将列表式数据结构通过递归变化成树形数据结构,再通过递归遍历 此树中同一个父菜单,同时,同一层菜单下的数据还要通过其iOrder (菜单编号)来排序。 总体看来,这种排序方式导致花费大量时间对同一父菜单下的子菜单进行排序,进一步造 成递归程序的大量使用,极大地降低了排序速度,例如,一个拥有3500+的菜单的排序时间 会在15秒以上,这大大地降低了用户的使用体验。 因此,如何加快菜单等树形存储结构的数据的排序速度,减短排序时间,提高用户 体验成为亟待解决的问题。
技术实现思路
本专利技术正是基于上述问题,提出了一种新的技术方案,可以提高菜单等树形存储 结构的数据的排序速度,减短排序时间,提高用户体验。 有鉴于此,本专利技术的一方面提出了一种树形节点排序方法,包括:根据菜单列表数 据中菜单的编号对所述菜单列表数据进行排序;根据所述菜单列表数据中菜单的父标识与 菜单的所述编号对排序后的所述菜单列表数据进行重新排序;将重新排序后的所述菜单列 表数据转化为树形结构数据,以根据所述树形结构数据检索对应的父节点和子节点;根据 所述父节点与所述子节点对所述树形结构数据逐层展开,并将展开后的数据转化为目标菜 单列表数据。 在该技术方案中,通过对排序后的菜单列表数据进行重新排序,这样菜单列表数 据被组装成树形结构数据时,就可以按顺序从菜单列表数据取数据,不需要再递归遍历树 形结构数据中同一个父菜单,这大大地缩短了组装树形结构数据的时间,同时减少了递归 程序的应用,极大地加快了排序速度,缩短了排序时间,可以有效地提高用户的排序体验。 在上述技术方案中,优选地,还包括:将重新排序后的所述菜单列表数据转化为树 形结构数据,具体包括:根据重新排序后的所述菜单列表数据,建立字典表,并向所述字典 表中添加所述菜单列表数据中的菜单,以及在所述字典表添加完成时,根据字典表标识逐 层获取所述字典表中的所述菜单列表数据,并将所述菜单列表数据转化为所述树形结构数 据。 在该技术方案中,由于从字典表中取数据时间是递归减半的,且字典表中有索引 (字典表标识),这样在利用字典表逐层返回的菜单建立树形数据结构时,可以加快索引 字典表菜单列表数据中数据的速度,进一步地加快了菜单列表数据转化为树形结构数据速 度,最终可以达到提商排序速率的目的。 在上述技术方案中,优选地,还包括:每一所述字典表都对应一所述字典表标识, 且每一所述字典表都由父标识相同的菜单组成。 在该技术方案中,每个字典表都是一个字典表标识(KEY),以便于快速检索字典表 中的菜单数据,且每一字典表都对应一个按照SupID,iOrder正序排列的菜单列表,每一字 典表中的菜单都属于同一层菜单,这样可以保证字典表中的菜单是顺序排列的,并可以有 效地提高字典表检索数据的效率。 在上述技术方案中,优选地,还包括:在向当前字典表中添加菜单时,判断当前菜 单与所述当前字典表中的菜单的父标识是否相同,在判定结果为是时,将所述当前菜单添 加到所述当前字典表中。 在该技术方案中,向当前字典表中添加菜单时,判断当前菜单与所述当前字典表 中的菜单的父标识是否相同,在判定结果为是时,才将当前菜单添加到当前字典表中,这样 可以保证每一字典表中的菜单都属于同一层菜单,且每个字典表都有唯一的一个字典表标 识,以便于可以正确无误地从字典表中索引每一层菜单。 在上述技术方案中,优选地,还包括:在判定结果为否时,新建一字典表,并将所述 当前菜单添加到所述新建的字典表中。 在该技术方案中,在当前菜单与当前字典表中已有菜单的父标识不相同,意味着 当前字典表已添加完成,需要重新初始化一字典表,这样可以保证每一字典表中的菜单都 属于同一层菜单,且每个字典表都有唯一的一个字典表标识。 本专利技术的另一方面提出了一种树形节点排序装置,包括:排序单元,根据菜单列表 数据中菜单的编号对所述菜单列表数据进行排序并根据所述菜单列表数据中菜单的父标 识与菜单的所述编号对排序后的所述菜单列表数据进行重新排序;第一转化单元,连接至 所述排序单元,将重新排序后的所述菜单列表数据转化为树形结构数据;检索单元,连接至 所述转化单元,根据所述树形结构数据检索对应的父节点和子节点;展开单元,连接至所述 检索单元,根据所述父节点与所述子节点对所述树形结构数据逐层展开;第二转化单元,连 接至所述展开单元,将展开后的数据转化为目标菜单列表数据。 在该技术方案中,通过对排序后的菜单列表数据进行重新排序,这样菜单列表数 据被组装成树形结构数据时,就可以按顺序从菜单列表数据取数据,不需要再递归遍历树 形结构数据中同一个父菜单,这大大地缩短了组装树形结构数据的时间,同时减少了递归 程序的应用,极大地加快了排序速度,缩短了排序时间,可以有效地提高用户的排序体验。 在上述技术方案中,优选地,所述第一转化单元包括:建立单元,根据重新排序后 的所述菜单列表数据,建立字典表;添加单元,向所述字典表中添加所述菜单列表数据中的 菜单,以及所述第一转化单元还用于:在所述字典表添加完成时,根据字典表标识逐层获 取所述字典表中的所述菜单列表数据,并将所述菜单列表数据转化为所述树形结构数据。 在该技术方案中,由于从字典表中取数据时间是递归减半的,且字典表中有索引 (字典表标识),这样在利用字典表逐层返回的菜单建立树形数据结构时,可以加快索引 字典表菜单列表数据中数据的速度,进一步地加快了菜单列表数据转化为树形结构数据速 度,最终可以达到提商排序速率的目的。 在上述技术方案中,优选地,还包括:组成单元,每一所述字典表都对应一所述字 典表标识,且每一所述字典表都由父标识相同的菜单组成。 本文档来自技高网
...

【技术保护点】
一种树形节点排序方法,其特征在于,包括:根据菜单列表数据中菜单的编号对所述菜单列表数据进行排序;根据所述菜单列表数据中菜单的父标识与菜单的所述编号对排序后的所述菜单列表数据进行重新排序;将重新排序后的所述菜单列表数据转化为树形结构数据,以根据所述树形结构数据检索对应的父节点和子节点;根据所述父节点与所述子节点对所述树形结构数据逐层展开,并将展开后的数据转化为目标菜单列表数据。

【技术特征摘要】

【专利技术属性】
技术研发人员:张隽永杨庆峰
申请(专利权)人:用友优普信息技术有限公司
类型:发明
国别省市:北京;11

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

1