当前位置: 首页 > 专利查询>北京大学专利>正文

单次遍历树生成前后序编码的方法技术

技术编号:4025231 阅读:362 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种通过单次遍历便可同时构建XML文档前序编码和后序编码的方法,属于数据结构与算法领域。本发明专利技术通过把XML节点的遍历序和编码序分开,然后合并前序编码和后序编码中相同的遍历序,关键的技术点为正确地定位入、出节点的时机,并同时维护两个独立增长的前序编码序和后序编码序,当完成对XML树的一次扫描时每个节点都将得到自己的唯一的前序编码和后序编码。本发明专利技术把两次扫描的消耗降低到一次,当数据量很大时,单次扫描生成前后序编码的方法减少了一半的时间开销,大大加速了XML文档构建索引的过程。

【技术实现步骤摘要】

本专利技术提供了一种建立XML索引的方法,具体涉及一种单次遍历XML文档生成前 后序编码的方法,属于数据结构与算法领域。
技术介绍
现有的XML索引技术将XML数据单元作为记录保存,同时保存有助于确定节点间 结构关系的位置信息,位置信息通常分为两类,一类是节点在某种遍历方法所得字符序列 中的序号,另一类是节点在XML文档中的路径信息。基于前后序的索引编码方式可以完整 地反映XML节点间的结构关系,进而将XML文档表达成一个由节点组成的序列。前后序编码是一种区间编码方式,其基本思想是将在先序遍历序列和后序遍历序 列中的序列对组成的区间(pre,post)作为节点的位置信息,其基本索引记录形式为(s, pre,p0St),其中s为XML树中节点的标签属性。前后序编码的方式经常应用于构建XML文 档的索引。通常得到XML的前后序编码都需要进行前序遍历和后序遍历两次扫描,当XML文 档很大时两次扫描所消耗的时间代价是巨大的。
技术实现思路
本专利技术的目的在于提供一种方法,通过单次扫描XML树同时实现前序和后序编 码,借以解决通常的两次扫描带来的时间消耗问题。本专利技术的原理是把XML节点的遍历序和编码序分开,然后合并前序编码和后序编 码中相同的遍历序,进而实现单次扫描的方案。在遍历序中得到的XML节点序列形如“入 A,入B,入C,出C,入D,出D,出B,入E,出E,出A”,前序编码以入节点为触发编码的时机,即 A,B,C,D,E,而后序编码以出节点为触发编码的时机,即C,D,B, E,A,具体见图2。对XML 树的遍历过程可参照前序编码遍历(或后序编码遍历)方案,关键的技术点为正确地定位 入、出节点的时机,并同时维护两个独立增长的前序编码序和后序编码序,当完成对XML树 的一次扫描时每个节点都将得到自己的唯一的前序编码和后序编码。在程序代码中,设立 进入递归函数的前、后分别为入、出节点的时机,并声明两个全局变量用来保存当前增长的 前序编码序和后序编码序。本专利技术的技术方案如下定义函数V,其参数为树的节点n,该函数的执行流程如图1所示,其实现方法如 下1).如果参数n为null,则退出本函数;否则执行2);2) 构建前序编码;3).把参数n定义为其左子节点,递归调用函数V;4).构建后序编码;5).构建前序编码;36).把参数n定义为其右子节点,递归调用函数V;7).构建后序编码;8).函数结束。本专利技术通过单次扫描XML文档同时实现前序和后序编码的方法,把两次扫描的消 耗降低到一次,当数据量很大时,单次扫描生成前后序编码的方法减少了一半的时间开销, 大大加速了 XML文档构建索引的过程。附图说明图1为执行单次遍历树生成前后序编码的流程图;图2为对一个树进行遍历的例子。具体实施例方式下面用一个具体的实施例来对本专利技术做进一步的阐述。图2是一个单次扫描生成前后序编码的例子,该树共有5个节点,其中A是根节 点。经过本专利技术提供的方法执行遍历过程,可得出如下结果该树的遍历序列为入A,入B,入C,出C,入D,出D,出B,入E,出E,出A ;前序编码 的序列为A,B, C,D,E ;后序编码的序列为C,D,B, E,A。因此实现了单次遍历树同时编码 前后序的功能。最后需要注意的是,公布实施例的目的在于帮助进一步理解本专利技术,但是本领域 的技术人员可以理解在不脱离本专利技术及所附的权利要求的精神和范围内,各种替换和修 改都是可能的。因此,本专利技术 应局限于实施例所公开的内容,本专利技术要求保护的范围以权 利要求书界定的范围为准。权利要求一种构建XML前序和后序编码的方法,其特征在于,所述方法对XML文档的遍历次数为一次;其实现方法为定义函数V,其参数为树的节点n,该函数的实现方法如下1).如果参数n为null,则退出本函数;否则执行2);2).构建前序编码;3).把参数n定义为其左子节点,递归调用函数V;4).构建后序编码;5).构建前序编码;6).把参数n定义为其右子节点,递归调用函数V;7).构建后序编码;8).函数结束。2.如权利要求1所述的方法,其特征在于,所述的前序编码和后序编码各保存在一个 全局变量中;所述的构建前序编码和构建后序编码是指对该全局变量的维护。全文摘要本专利技术公开了一种通过单次遍历便可同时构建XML文档前序编码和后序编码的方法,属于数据结构与算法领域。本专利技术通过把XML节点的遍历序和编码序分开,然后合并前序编码和后序编码中相同的遍历序,关键的技术点为正确地定位入、出节点的时机,并同时维护两个独立增长的前序编码序和后序编码序,当完成对XML树的一次扫描时每个节点都将得到自己的唯一的前序编码和后序编码。本专利技术把两次扫描的消耗降低到一次,当数据量很大时,单次扫描生成前后序编码的方法减少了一半的时间开销,大大加速了XML文档构建索引的过程。文档编号G06F17/30GK101853310SQ201010204349公开日2010年10月6日 申请日期2010年6月21日 优先权日2010年6月21日专利技术者徐潇然, 邓志鸿 申请人:北京大学本文档来自技高网...

【技术保护点】
一种构建XML前序和后序编码的方法,其特征在于,所述方法对XML文档的遍历次数为一次;其实现方法为:定义函数V,其参数为树的节点n,该函数的实现方法如下:1).如果参数n为null,则退出本函数;否则执行2);2).构建前序编码;3).把参数n定义为其左子节点,递归调用函数V;4).构建后序编码;5).构建前序编码;6).把参数n定义为其右子节点,递归调用函数V;7).构建后序编码;8).函数结束。

【技术特征摘要】

【专利技术属性】
技术研发人员:徐潇然邓志鸿
申请(专利权)人:北京大学
类型:发明
国别省市:11[中国|北京]

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

1