另外,如果數據庫支持的話 你還可以將 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強大的數組操作,用循環來進行遞歸。注釋里是一種相近的方法,只是處理結果的時機不同而已。