当前位置:七道奇文章资讯网站建设网站编程
日期:2010-10-08 18:22:00  来源:本站整理

php树形构造的算法(三)[网站编程]

赞助商链接



  本文“php树形构造的算法(三)[网站编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

那么关于这样的构造我们该若何增添,更新和删除一个节点呢? 增添一个节点普通有两种办法:

保存原有的name 和parent构造,用老办法向数据中增添数据,每增添一条数据今后利用rebuild_tree函数对整个构造重新举行一次编号.
效率更高的办法是改变全部位于新节点右侧的数值.举例来说:我们想增添一种新的生果"Strawberry"(草莓)它将成为"Red"节点的最后一个子节点.首先我们需求为它腾出一些空间."Red"的右值该当从6改成8,"Yellow 7-10 "的左右值则该当改成 9-12. 顺次类推我们可以得知,假如要给新的值腾出空间需求给全部左右值大于5的节点 (5 是"Red"最后一个子节点的右值) 加上2. 所以我们这样举行数据库操作:
 

  1. UPDATE tree SET rgtrgt=rgt+2 WHERE rgt>5;   
  2. UPDATE tree SET lftlft=lft+2 WHERE lft>5;  


这样就为新插入的值腾出了空间,目前可以在腾出的空间里成立一个新的数据节点了, 它的左右值辨别是6和7

 

  1. INSERT INTO tree SET lft=6rgt=7name='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树形构造的算法(三)[网站编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • php树形构造的算法(四)
  • php树形构造的算法(三)
  • php树形构造的算法(二)
  • php树形构造的算法(一)
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .