另外,如果数据库支持的话 你还可以将 rebuild_tree() 和 腾出空间的操作写成数据库端的触发器函数, 在插入和更新的时候自动执行, 这样可以得到更好的运行效率, 而且你添加新节点的sql语句会变得更加简单。 类递归法 posted by 访客 on 2004, may 31 - 9:18am. 我用类 递归法 写了段程序,跟文章中的递归不完全一样 正准备移植到 xoops 中: http://dev.xoops.org/modules/xfmod/project/?ulink
已经出现内存溢出现象 不过准备继续采用递归法,只是需要继续改进
希望有机会跟各位讨论cms » reply to this comment 还是两种方法之比较 posted by 访客 on 2004, march 17 - 8:30pm. 仔细研究了一下这篇文章,觉得受益非浅,但后来又想了想,觉得有一下问题(为了好记忆,毗邻目录模式我称为递归的方法,预排序遍历树算法我称为预排序树的方法):
fwolf www.fwolf.com » reply to this comment 非常高兴看到你的回复 posted by shuke on 2004, march 18 - 5:47am. 非常高兴你这么认真的读完这篇文章。这篇文章其实是原来发表在sitepoint.com上的,我把它翻译了一下,希望给希望初学入门的朋友介绍一些方法,抛砖引玉。你的方法也很好,有机会我会试一下的。(如果你有兴趣的话,何不就上面的例子把你的方法和具体实现的代码也写成教程发出来吧,这样大家就用更加实际的例子来模仿了)如果你对数据库中保存多级结构有兴趣研究的话,这里还有两个连接也很不错可以作为参考: 介绍了常见的4中方法 一次查询,数组排序的脚本我想你的脚本肯定比这个强。 另外我看到你也用drupal,它还有一个高级功能叫分布式用户验证系统,只要在任何一个drupal的站点注册以后就可以登录访问其它的drupal站点了。挺有意思的。 祝好! » reply to this comment 用循环来建树已经实现了 posted by 访客 on 2004, march 25 - 10:10pm. 你上次提供的资料我已经都看过了,不过老实说,第一篇文章里没有太多新东西,或许是我没看太明白吧,第二个居然是php3写的,程序结构没有细看,用到太多的函数交叉。 正好我在一个系统中用户角色要用到分级,按照数组的思路就把遍历写了下来,没有时间整理,先放到这里你看看吧,数据库用的是adodb,程序是直接从系统中摘出来的,希望能够描述得清楚,主要是利用了php强大的数组操作,用循环来进行递归。注释里是一种相近的方法,只是处理结果的时机不同而已。