`

2015.03.16~18---阅读中移规范根据schema整理xml格式,XCAP开发,MySql预排序遍历树算法

阅读更多
1. 讨论通讯录图片的存储方式、传输方式和获取方式
2. 讨论通讯录走标准的XCAP协议时,xml组织的格式
3. 编写php代码完成30%

收获:
1.MySql预排序遍历树算法
基本思路:
这个算法有如下几个数据结构

1 lft 代表左 left

2 rgt 代表右 right

3 lvl 代表所在的层次 level

下面这个图是一个典型的结构 
 

我们先看一些使用方法

1     查看整个树(A)有多少节点(包含自己)

直接看根节点就行了 (right-left+1)/2 = (20-1+1)/2 = 10

这个数有10个节点

2     查看从节点A到E的路径

select * from tree where lft between 1 and 6 and rgt between 7 and 20 order by lft

得到的结果是A,B,D,E 这4个节点的数据,且按照访问路径的顺序

如果2个节点之间不是上下级的关系,则查询没有结果

反向也是一样的,可以拿到底部一个节点,到上级节点的路径

select * from tree where lft between 1 and 6 and rgt between 7 and 20 order by lft desc

唯一的区别就是排序是反向的就行了。

3     得到某个节点下面的所有节点,且按照树状结构返回

我们用B做例子

select * from tree where lft>2 and right<11 order by lft

拿到的结果是 C,D,E,F,而且顺序也是正确的。

4     拿到所有下2级的子节点

我们A做例子,这次加上了lvl的参数,因为A的level是1,所以我们查询level不大于3的。

select * from tree where lft>2 and right<11 and lvl<=3 order by lft

下面看我们新增加一个节点的方法。

我们在根节点的下面,G节点的右侧增加一个X节点



我们要做的工作就是

1 G节点的右参数为13

2 变更所有的受影响的节点,给新节点腾出空位子

所有左节点比G节点大的,都增加2

update tree set lft=lft+2 where lft>12

所有右节点比G节点大的,都增加2

update tree set rgt=rgt+2 where rgt>13

3 新节点放在空位子上,lft=14,rgt=15

这样就完成了一个新节点的增加操作。

还有其它更复杂的应用,都是在这个基础上演变而来的。
如: 邻接表模型、检索整树、检索所有叶子节点、检索单一路径、检索子树的深度等
  • 大小: 47.5 KB
  • 大小: 44.8 KB
分享到:
评论

相关推荐

    xfire与cxf包冲突解决方法

    1、以下四个类调用了XmlSchema-1.1.jar包 因与cxf包xmlschema-core-*.jar 冲突 故重新打包 XmlSchema-1.1.jar 源码修改原类径的方法来重新打包避免冲突 源码放在javas.rar文件夹中 org.codehaus.xfire.wsdl11....

    XmlSchema-1.2.jar,xmlschema-1.2.jar,xml.jar

    XmlSchema-1.2.jar,xmlschema-1.2.jar,xml.jar

    kafka-schema-registry-client-6.2.2.jar

    mvn install:install-file -DgroupId=io.confluent -DartifactId=kafka-schema-registry-client -Dversion=6.2.2 -Dfile=/root/kafka-schema-registry-client-6.2.2.jar -Dpackaging=jar 官网下载地址 packages....

    cxf-2.1.jar neethi-2.0.1.jar xml-resolver-1.2.jar XmlSchema-1.1.jar

    4. **XmlSchema-1.1.jar**: 这是Apache的XmlSchema项目,它为Java应用程序提供了XML Schema 1.1规范的实现。XML Schema是一种用于定义XML文档结构和数据类型的语言,它可以验证XML文档是否符合预定义的规则。这个库...

    xmlschema-core-2.0.3.jar

    xmlschema-core-2.0.3.jar;xmlschema-core-2.0.3.jar;xmlschema-core-2.0.3.jar

    XmlSchema-1.4.7.jar

    XmlSchema-1.4.7.jar 是一个Java库,它实现了W3C的XML Schema标准,用于处理XML Schema文档。这个版本(1.4.7)可能是该库的一个稳定版本,提供给用户免费使用。XML Schema是XML的一种规范,定义了如何验证XML文档的...

    XmlSchema-1.4.6.jar

    `XmlSchema-1.4.6.jar` 是一个包含Java绑定的XML Schema API的库,它为处理XML Schema文档提供了支持。在开发Web服务客户端时,尤其是与基于SOAP(简单对象访问协议)的Web服务交互时,这个库扮演了至关重要的角色。...

    persistence-2_0-final-jar_and_schema.zip

    《深入理解JPA:基于persistence-2_0-final-jar_and_schema.zip的解析》 在Java开发领域,Java Persistence API(JPA)是用于管理关系数据库中的对象持久化的一个重要标准。它为开发者提供了一种简洁、面向对象的...

    XmlSchema-1.1.jar

    XmlSchema-1.1.jar XmlSchema-1.1.jar

    Xerces-J-tools.2.11.0-xml-schema-1.1-beta.zip下载

    Xerces-J-tools.2.11.0-xml-schema-1.1-beta.zip为apache开源xml相关,可用于xml解析 Xerces是由Apache组织所推动的一项XML文档解析开源项目,它目前有多种语言版本包括JAVA、C++、PERL、COM等。[1] Xerces是一个...

    xmlschema-core-2.0.3的jar

    综上所述,`xmlschema-core-2.0.3.jar`是Java开发中的一个重要组件,特别是在涉及到Spring Web服务和XML Schema处理时。它简化了XML数据的验证和类型转换,提高了服务的稳定性和可靠性。对于任何使用Spring构建SOAP ...

    xmlschema-core-2.2.1.jar

    如果是maven依赖,可以在pom.xml中引入以下配置 &lt;groupId&gt;org.apache.ws.xmlschema &lt;artifactId&gt;xmlschema-core &lt;version&gt;2.2.1 &lt;/dependency&gt;

    mysql-5.7.32-linux-glibc-2.28-aarch64.tar.gz

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,特别是在Web应用程序中。MySQL 5.7.32是该系统的一个重要版本,提供了许多性能优化、安全增强和功能改进。在本篇文章中,我们将深入探讨针对arm架构的MySQL 5.7....

    完整的axis2 jar包包含实例.zip

    --&gt;XmlSchema-1.4.7.jar --&gt;wsdl4j-1.6.2.jar --&gt;axiom-api-1.2.12.jar --&gt;axiom-impl-1.2.12.jar --&gt;neethi-3.0.1.jar --&gt;axis2-transport-local-1.6.1.jar --&gt;commons-httpclient-3.1.jar --&gt;axis2-jaxws-...

    XmlSchema-1.4.7 jar包

    好不容易找到的XmlSchema-1.4.7 jar包,需要的同学速度下载吧。不黑心,只要1分~~~

    openstack安装包(一)

    python-jsonschema-2.3.0-1.el6.noarch.rpm python-keyring-0.7-1.el6.noarch.rpm python-keystone-2013.2.3-3.el6.noarch.rpm python-keystoneclient-0.7.1-2.el6.noarch.rpm python-kombu-1.4.1-1.el6.rf.noarch....

    mysql-8.0.19-el7-x86_64.tar.gz

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,其版本8.0.19是一个重要的更新,带来了许多性能改进和新特性。"mysql-8.0.19-el7-x86_64.tar.gz" 是MySQL 8.0.19在Linux(特别是基于RHEL的CentOS 7)上x86_...

    mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar.zip

    MySQL是世界上最流行的开源关系型数据库管理系统之一,以其高效、可靠和易于使用而闻名。这个压缩包文件"mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar.zip"包含了用于安装MySQL 5.7.35版本在Linux系统,特别是基于RHEL...

    XmlSchema标准参考手册.chm

    XML Schema是以XML语言为基础的,它用于可替代DTD。 一份XML schema文件描述了XML文档的结构。 XML Schema语言也被称为XML Schema Definition (XSD)(XML Schema定义). --------------------------------------...

    xerces-c-3.2.3.tar.gz

    - **DOM**:DOM将整个XML文档解析成一棵节点树,允许开发者遍历和修改文档的任何部分,但需要较大的内存空间。 2. **XML Schema验证**:Xerces-C支持XML Schema,允许开发者定义XML文档的结构和数据类型,从而确保...

Global site tag (gtag.js) - Google Analytics