php树形构造的算法(三)[网站编程]
本文“php树形构造的算法(三)[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
那么关于这样的构造我们该若何增添,更新和删除一个节点呢? 增添一个节点普通有两种办法:
保存原有的name 和parent构造,用老办法向数据中增添数据,每增添一条数据今后利用rebuild_tree函数对整个构造重新举行一次编号.
效率更高的办法是改变全部位于新节点右侧的数值.举例来说:我们想增添一种新的生果"Strawberry"(草莓)它将成为"Red"节点的最后一个子节点.首先我们需求为它腾出一些空间."Red"的右值该当从6改成8,"Yellow 7-10 "的左右值则该当改成 9-12. 顺次类推我们可以得知,假如要给新的值腾出空间需求给全部左右值大于5的节点 (5 是"Red"最后一个子节点的右值) 加上2. 所以我们这样举行数据库操作:
- UPDATE tree SET rgtrgt=rgt+2 WHERE rgt>5;
- UPDATE tree SET lftlft=lft+2 WHERE lft>5;
这样就为新插入的值腾出了空间,目前可以在腾出的空间里成立一个新的数据节点了, 它的左右值辨别是6和7
- INSERT INTO tree SET lft=6, rgt=7, name='Strawberry';
再做一次查询看看吧!怎么样?很快吧.
好了,目前你可以用两种差别的办法计划你的多级数据库构造了,采取何种方法完好取决于你个人的判断,但是关于层次大都量大的构造我更喜好第二种办法.假如查询量较小但是需求频繁增添和更新的数据,则第一种办法更为简便.
别的,假如数据库支持的话 你还可以将 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
还是两种办法之对比
以上是“php树形构造的算法(三)[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:php树形构造的算法(二)
- ·下一篇文章:php树形构造的算法(四)
- ·中查找“php树形构造的算法(三)”更多相关内容
- ·中查找“php树形构造的算法(三)”更多相关内容