(首先声明:因为看到许多人对本文的热心关注,作者对本文稍作修改和补充)
本文具体介绍:1。目录树的数据结构
2。探讨具体应用中数据库的查询复杂度。
表结构: id(编号)pid(父节点)nodepath(路径)nodetype(状态)
示例数据:1 0 0> F
2 0 0> D
3 2 0>2> D
4 3 0>2>3> F
测试项目:
1。获取当前节点的父节点:复杂度:O(n)
2。获取当前节点的下级子节点: 复杂度:O(n)
3。获取当前节点的所有子孙节点: 复杂度:O(n)
4。获取当前节点的所有直系祖宗节点: 复杂度:O(n)
5。删除、新增节点时比较容易实现,主要是实现节点转移有点麻烦:设被转移
的节点为S,转移到的目的节点为T,则S.nodepath=T.nodepath+T.id+'>';同时检
查S是否有兄弟节点,无则S的父节点的nodetype改为F;检查T的nodetype,如为F
则改为D;修改表中S的子孙节点nodepath。一般这种情况出现的几率很低。