[发明专利]一种处理树型结构数据的方法及系统有效
| 申请号: | 200710007530.9 | 申请日: | 2007-02-01 |
| 公开(公告)号: | CN101236550A | 公开(公告)日: | 2008-08-06 |
| 发明(设计)人: | 马云峰;毛怀源;杨争;陈波 | 申请(专利权)人: | 阿里巴巴公司 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 北京集佳知识产权代理有限公司 | 代理人: | 逯长明 |
| 地址: | 英属开曼群岛大开曼*** | 国省代码: | 开曼群岛;KY |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 处理 结构 数据 方法 系统 | ||
技术领域
本发明涉及数据处理技术,特别是涉及一种处理树型结构数据的方法及系统。
背景技术
在计算机应用中,经常需要处理树型结构的数据,如公司内部组织结构、产品分类、论坛帖子、邮件列表等等。参照图1,是树型结构数据的示例图,例如有一个论坛系统需要把主帖及相应的跟帖按照树型的结构显示出来,通过帖子标题的缩进来体现帖子间的父子关系,为用户更清晰地展示出帖子间的关系。显示效果如图1所示,每条数据记录为树的一个结点,其中主帖为根结点,所有跟帖为子结点。
上例中,在数据库设计时,记录帖子信息的数据表至少包括以下字段:帖子ID(id),主帖ID(mainId),父帖ID(parentId),帖子标题(topic),帖子内容(content),如图2所示。其中,所述帖子ID为帖子创建时的序列号;跟帖的标题可能与主帖的标题相同,也可能不同。
目前,按照树型结构显示某个主帖及相应跟帖的方法是:先从数据库中读出mainId等于指定主帖ID的所有帖子(即所述主帖和它的所有跟帖),并按照读取顺序存入一个列表。由于帖子在数据库中的存储通常按照创建的先后顺序排列,所以列表中的帖子并不按照树型结构排列。因此,下一步是使用递归算法遍历所述帖子列表,并在页面上分层次显示帖子。下面给出了一段实现所述递归算法的示例代码,能够得到树型结构排列的帖子序列,按照图1所示效果输出显示。
void printPosts(List posts,long rootId,int level){
for(int i=0;i<posts.size();i++){
Post post=(Post)posts.get(i);
if(post.parentId==rootId){
print(post.topic,level);
printPosts(posts,post.id,level+1);
}
}
}
但是,由于递归算法自身存在的计算性能问题,采用递归遍历的方法处理树型结构的数据时速度较慢,而且当层次较多的情况下尤其明显。例如一棵帖子树总共有M个帖子,分为N层,则用递归算法显示所述帖子数总共计算M*N次,当M*N数量巨大时,需要耗费很多计算时间,造成系统不能及时响应用户查看数据的需求。
发明内容
本发明所要解决的技术问题是提供一种处理树型结构数据的方法及系统,以解决采用递归遍历的方法处理显示树型结构的数据速度较慢的问题。
为解决上述技术问题,本发明提供了一种处理树型结构数据的方法,包括:
在结点数据中记录用于标识数据层次关联关系的信息;
读取同一棵树的所有结点数据;
根据所述数据层次关联关系,对结点数据进行排序后得到数据列表;
顺序扫描所述列表并输出。
其中,所述排序是对标识数据层次关联关系的信息所对应的ASCII编码值,按照ASCII编码表的排序规则进行排序。
其中,所述数据关联关系以数字/字母与非数字/字母字符的组合表示。
优选的,根据非数字/字母字符的个数,判断输出数据时需要缩进的空格数。
优选的,每棵树的根结点数据设置相同的数字/字母。
本发明还提供了一种处理树型结构数据的系统,包括:
排序因子构造单元,用于对应每个结点数据,构造标识数据层次关联关系的排序因子;
数据获取单元,用于读取同一棵树的所有结点数据;
排序单元,用于根据所述排序因子,对结点数据进行排序后得到数据列表;
输出单元,用于顺序扫描所述列表并输出。
其中,所述排序单元对排序因子对应的ASCII编码值,按照ASCII编码表的排序规则进行排序。
其中,所述排序因子以数字/字母与非数字/字母字符的组合表示。
优选的,所述输出单元根据非数字/字母字符的个数,判断输出数据时需要缩进的空格数。
优选的,所述排序因子构造单元对每棵树的根结点数据设置相同的数字/字母。
与现有技术相比,本发明具有以下优点:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴公司,未经阿里巴巴公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710007530.9/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种灰粉流量阀
- 下一篇:一种治疗腹泻、菌痢、结肠炎的中药
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置





