亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 邏輯算法 > 正文

php:樹形結(jié)構的算法 3

2024-09-08 23:18:45
字體:
供稿:網(wǎng)友


    那么對于這樣的結(jié)構我們該如何增加,更新和刪除一個節(jié)點呢? 增加一個節(jié)點一般有兩種方法:
  
  保留原有的name 和parent結(jié)構,用老方法向數(shù)據(jù)中添加數(shù)據(jù),每增加一條數(shù)據(jù)以后使用rebuild_tree函數(shù)對整個結(jié)構重新進行一次編號。
  效率更高的辦法是改變所有位于新節(jié)點右側(cè)的數(shù)值。舉例來說:我們想增加一種新的水果"strawberry"(草莓)它將成為"red"節(jié)點的最后一個子節(jié)點。首先我們需要為它騰出一些空間。"red"的右值應當從6改成8,"yellow 7-10 "的左右值則應當改成 9-12。 依次類推我們可以得知,如果要給新的值騰出空間需要給所有左右值大于5的節(jié)點 (5 是"red"最后一個子節(jié)點的右值) 加上2。 所以我們這樣進行數(shù)據(jù)庫操作:
  
  update tree set rgt=rgt+2 where rgt>5;
  update tree set lft=lft+2 where lft>5;
  這樣就為新插入的值騰出了空間,現(xiàn)在可以在騰出的空間里建立一個新的數(shù)據(jù)節(jié)點了, 它的左右值分別是6和7
  
  insert into tree set lft=6, rgt=7, name='strawberry';
  
  再做一次查詢看看吧!怎么樣?很快吧。
  好了,現(xiàn)在你可以用兩種不同的方法設計你的多級數(shù)據(jù)庫結(jié)構了,采用何種方式完全取決于你個人的判斷,但是對于層次多數(shù)量大的結(jié)構我更喜歡第二種方法。如果查詢量較小但是需要頻繁添加和更新的數(shù)據(jù),則第一種方法更為簡便。
  
  另外,如果數(shù)據(jù)庫支持的話 你還可以將 rebuild_tree() 和 騰出空間的操作寫成數(shù)據(jù)庫端的觸發(fā)器函數(shù), 在插入和更新的時候自動執(zhí)行, 這樣可以得到更好的運行效率, 而且你添加新節(jié)點的sql語句會變得更加簡單。
  類遞歸法
  posted by 訪客 on 2004, may 31 - 9:18am.
  我用類 遞歸法 寫了段程序,跟文章中的遞歸不完全一樣
  正準備移植到 xoops 中:
  http://dev.xoops.org/modules/xfmod/project/?ulink
  
  已經(jīng)出現(xiàn)內(nèi)存溢出現(xiàn)象
  不過準備繼續(xù)采用遞歸法,只是需要繼續(xù)改進
  
  希望有機會跟各位討論cms
  » reply to this comment
  還是兩種方法之比較
  posted by 訪客 on 2004, march 17 - 8:30pm.
    仔細研究了一下這篇文章,覺得受益非淺,但后來又想了想,覺得有一下問題(為了好記憶,毗鄰目錄模式我稱為遞歸的方法,預排序遍歷樹算法我稱為預排序樹的方法):
  
  1、兩種方法比較大的區(qū)別是遞歸是在查詢的時候要用到堆棧進行遞歸,預排序樹則是在更新節(jié)點時要進行半數(shù)(指所插入節(jié)點的后半部分)節(jié)點的更新。雖然您也說了,如果節(jié)點多了,更新又頻繁,預排序樹效率會降低,采用遞歸會好些,而如果節(jié)點層次較多的話,首先遞歸會導致堆棧溢出,再者遞歸本身效率就不高,加上每一層遞歸都要操作數(shù)據(jù)庫,總體效果也不會理想。我目前的做法是一次性把數(shù)據(jù)全取出來,然后對數(shù)組進行遞歸操作,會好一些;再進一步改進的話,可以為每行記錄增加一個root根節(jié)點(目前是只記錄相鄰的父節(jié)點),這樣在查找分支樹時效率就會比較高了,更新樹的時候也是十分便捷的,應該是一種比較好的方式。
  
  2、改進遞歸的方式,文章中在計算預排序樹節(jié)點的左右值的時候其實也用到了一種遍歷方式,通過數(shù)組替代堆棧,手工實現(xiàn)壓棧和彈出;這種方法如果引用到遞歸算法中,在進行遞歸的時候也用數(shù)組替代堆棧的話,也可以提高遞歸的效率的。
  
  3、并發(fā),如果考慮到并發(fā)的情況,尤其是更新樹的時候,預排序樹大面積更新節(jié)點信息的方法需要額外注意采用加鎖和事務的機制保證數(shù)據(jù)一致性。
  
  4、多根節(jié)點或者多父節(jié)點的情況,在這種情況下,顯然就不是一個標準的二叉樹或者多叉樹了,預排序樹算法需要進行比較大的改進才能適應,而遞歸的方法則應用自如,所以在這種情況下,遞歸的適應性較強。這是當然的了,因為遞歸的方法就是鏈表的一種形式,樹、圖都可以用鏈表來表達,當然適應力強了。
  
  5、直觀,如果不用程序操作,直接觀察數(shù)據(jù)庫中存儲的數(shù)據(jù)的話,顯然遞歸方式下存儲的數(shù)據(jù)比較直觀,而預排序樹的數(shù)據(jù)很難直接閱讀(針對層次關系來說),這在數(shù)據(jù)交換中是不是會有影響呢?
  
    總體來說,我個人比較喜歡用遞歸的方法,但一直擔心遞歸對效率的影響,所幸還沒有接觸過規(guī)模較大的分類層次,遞歸用數(shù)組替代堆棧會是一種比較好的改進方法。而預排序樹不失為一種解決簡單樹的高效方法,用習慣了,也應該是非常出色的,尤其是它從葉子節(jié)點到根節(jié)點的反向查找非常方便。
  
  fwolf
  www.fwolf.com
  » reply to this comment
  非常高興看到你的回復
  posted by shuke on 2004, march 18 - 5:47am.
  非常高興你這么認真的讀完這篇文章。這篇文章其實是原來發(fā)表在sitepoint.com上的,我把它翻譯了一下,希望給希望初學入門的朋友介紹一些方法,拋磚引玉。你的方法也很好,有機會我會試一下的。(如果你有興趣的話,何不就上面的例子把你的方法和具體實現(xiàn)的代碼也寫成教程發(fā)出來吧,這樣大家就用更加實際的例子來模仿了)如果你對數(shù)據(jù)庫中保存多級結(jié)構有興趣研究的話,這里還有兩個連接也很不錯可以作為參考:
  介紹了常見的4中方法
  一次查詢,數(shù)組排序的腳本我想你的腳本肯定比這個強。
  另外我看到你也用drupal,它還有一個高級功能叫分布式用戶驗證系統(tǒng),只要在任何一個drupal的站點注冊以后就可以登錄訪問其它的drupal站點了。挺有意思的。
  祝好!
  » reply to this comment
  用循環(huán)來建樹已經(jīng)實現(xiàn)了
  posted by 訪客 on 2004, march 25 - 10:10pm.
  你上次提供的資料我已經(jīng)都看過了,不過老實說,第一篇文章里沒有太多新東西,或許是我沒看太明白吧,第二個居然是php3寫的,程序結(jié)構沒有細看,用到太多的函數(shù)交叉。
  正好我在一個系統(tǒng)中用戶角色要用到分級,按照數(shù)組的思路就把遍歷寫了下來,沒有時間整理,先放到這里你看看吧,數(shù)據(jù)庫用的是adodb,程序是直接從系統(tǒng)中摘出來的,希望能夠描述得清楚,主要是利用了php強大的數(shù)組操作,用循環(huán)來進行遞歸。注釋里是一種相近的方法,只是處理結(jié)果的時機不同而已。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产在线一区二区三区播放| 米奇777在线欧美播放| 尤物视频在线观看国产| 少妇性l交大片7724com| 国产精品原创| 极品美女一区二区三区| 中文字幕一区二区三区人妻电影| 不卡一卡二卡三乱码免费网站| 成人性爱视频在线观看| 久久av最新网址| 国产伦精品一区二区三区妓女| 日韩欧美一区电影| 中文字幕在线1| 视频免费在线看| 在线免费看黄av| 精品国产一区二区在线观看| 日韩高清一区在线| 午夜一区在线观看| 久久久久久亚洲精品不卡4k岛国| theporn国产精品| 亚洲欧洲精品成人久久奇米网| 在线免费观看电影网站入口| 海角社区69精品视频| 精品九九久久| 一区二区三区高清视频在线观看| 香蕉久久国产av一区二区| 中文字幕精品在线视频| 91tv亚洲精品香蕉国产一区| 国产精品一区二区免费看| 久久久欧美精品sm网站| 国色天香久久精品国产一区| 69成人免费视频| 免费观看国产成人| www.xxx麻豆| 成人无码av片在线观看| 三区四区在线视频| 中文字幕先锋av影音资源网| 成人综合婷婷国产精品久久蜜臀| 麻豆传媒一区| 天天做日日爱夜夜爽| 国产夫妻在线| 精品久久久久久中文字幕动漫| 最近2019中文字幕在线高清| 伊人av综合网| 一区二区在线免费播放| 在免费jizzjizz在线视频| 中文字幕在线观看视频一区| 北条麻妃一区二区三区中文字幕| 91caoporn在线| 欧美视频亚洲图片| 国产精品熟女一区二区不卡| 久久免费区一区二区三波多野| 一区二区三区视频在线免费观看| 国产日韩欧美精品| 免费中国女人69xxxxx视频| 日韩专区中文字幕一区二区| 麻豆精品久久久久久久99蜜桃| 国产精品亚洲视频在线观看| 国产理论片在线观看| 午夜激情一区二区三区| 欧美日韩亚洲精品一区二区三区| 三级av免费看| 日韩精品系列| 亚洲日本va| 精品国产99国产精品| 国产精品视频福利一区二区| 久久亚洲春色中文字幕久久久| 亚洲女同同性videoxma| 欧美三级特黄| 一区二区久久精品66国产精品| 亚洲老头老太hd| 亚洲欧洲一区二区在线播放| 欧美性欧美巨大黑白大战| 国产成人无遮挡在线视频| 88在线观看91蜜桃国自产| av电影在线观看一区二区三区| 久久亚洲捆绑美女| 初尝黑人巨炮波多野结衣电影| 国产不卡视频一区| 日韩欧美黄色大片| 国产精品小说在线| 国产精品久久视频| 国产免费黄色av| 久久亚洲精品伦理| 欧美tickling网站挠脚心| 久久精品久久精品久久| 亚洲精品无码专区在线播放| 一卡二卡欧美日韩| 国产精品久久久久久久av大片| 激情图片小说一区| 国产精品久久久久aaaa樱花| 九色丨porny丨自拍入口| 亚洲成人福利片| 无码人妻aⅴ一区二区三区| 欧美一区二区三区系列电影| 亚洲五码中文字幕| 天堂成人在线| 国产精品欧美三级在线观看| 色婷婷av一区二区三区大白胸| 自拍网站在线观看| 亚洲精品97| 久久久久久久久综合影视网| 无码任你躁久久久久久久| 91沈先生在线观看| 91国内精品久久| 日日干夜夜骑| 精品视频国内| 国产日韩欧美制服另类| 日韩精品免费在线观看| 欧美人与牛zoz0性行为| 色综合久久天天综线观看| 欧美顶级少妇做爰| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲精品一区久久久久久| 后入内射无码人妻一区| 18禁裸乳无遮挡啪啪无码免费| 国产色综合视频| 欧美在线亚洲| av色影在线看免费| 亚洲一区二区三区乱码| 日韩亚洲欧美中文高清在线| 国产精品视频导航| 精品国内片67194| 国产一区二区波多野结衣| 国产二区三区在线| 欧美一级电影在线| 一区二区三区四区影院| 亚洲男女av一区二区| 一区二区三区在线观看网站| 三级在线看中文字幕完整版| 高清视频在线观看三级| 国产黄a三级三级三级| 精品无码av无码免费专区| av在线app| 黄色录像1级片| aaa在线免费观看| 九九热视频精品| 国产视频精品久久久| 欧美成人国产一区二区| 先锋影音男人站你懂得| 国产男男gay网站| 26uuu精品一区二区在线观看| 人妖粗暴刺激videos呻吟| 日本一二三区视频在线| 波多野结衣av无码| 国产精品视频一区二区高潮| 国产一区二区三区福利| 成人h动漫在线| 亚洲网站在线播放| 免费人成在线不卡| 少妇大叫太粗太大爽一区二区| 欧美激情视频网| 亚洲色图第三页| 欧美一区二区三区婷婷| 韩国精品主播一区二区在线观看| 久久久国产精品视频| 99精品999| 国产a视频免费观看| 精品国产一区久久| 欧美性猛交内射兽交老熟妇| 欧美视频13p| 日韩一区欧美二区| 国产欧美三级| 95影院理论片在线观看| 成人在线观看高清| 久久久人成影片一区二区三区观看| 久久精品最新地址| 国产美女精品视频| 一级特黄aaa大片| 国产精品久久夜| 久久99青青精品免费观看| 亚洲精品福利资源站| 午夜国产精品视频| 视频一区视频二区中文| 国产特级淫片免费看| 色一情一乱一伦一区二区三欧美| chien国产乱露脸对白| 高清视频在线www色| 国产馆精品极品| 91视频免费在观看| 国产精九九网站漫画| 欧美精品一二区| 欧美自拍视频在线观看| 亚洲久久在线观看| 最近免费中文字幕mv视频| 主播大秀视频在线观看一区二区| 亚欧洲精品视频在线观看| 欧美gay1069大粗吊| 在线观看福利一区| 亚洲国产综合久久精品小蝴蝶| 日韩在线视频免费观看| 亚洲综合网站久久久| 黄网址在线看| 黄色无遮挡网站| 一级黄色毛毛片| 亚洲精品按摩视频| 国产成a人无v码亚洲福利| 女同性αv亚洲女同志| 午夜成人亚洲理伦片在线观看| 波多野结衣的一区二区三区| 久久人体大胆视频| 欧美影视资讯| 亚洲美女性生活视频| 26uuu色噜噜精品一区二区| 一区二区三区视频免费在线观看| 成人午夜碰碰视频| 日本一区二区综合亚洲| 亚洲美女视频一区| 欧美另类videos| 日韩偷拍一区二区| 亚洲精品伊人| 羞羞影视羞羞在线| 影音先锋久久| 精品国产亚洲av麻豆| 色哦色哦哦色天天综合| 在线观看欧美一区二区| 免费日韩一级片| 黄无遮挡免费网站| 国产精品久久久久9999小说| 操日韩av在线电影| 亚洲高清一区二| 国产精品久久久久久网站| 国产在线成人精品午夜| 在线成人免费| 天堂va欧美va亚洲va老司机| 久久亚洲综合网| 精品国产成人亚洲午夜福利| 99超碰麻豆| 欧美精品一区二区在线播放| 欧美成人vr18sexvr| 5566成人精品视频免费| 精品成人久久av| 日韩特黄一级片| 国产精品22p| 人xxxx性xxxxx欧美| 91嫩草精品| 久久久久久草| 亚洲国产成人精品一区二区| 天堂一区二区三区| 亚洲欧洲一区二区三区在线观看| 欧美一级淫片videoshd| 狠狠色成人综合网图片区| 91精品国产色综合久久| 欧美在线视频观看| 国产福利在线播放| 999国产视频| 国产黑人绿帽在线第一区| 玩弄中年熟妇正在播放| 美女日批在线观看| 91精品中文在线| www.4438全国最大| 国产农村老头老太视频| 美女视频一区免费观看| 在线观看日本黄色| 国产精品毛片| 波多野结衣不卡| 日本人视频jizz页码69| 亚洲成人精品女人久久久| 综合久久久久久| 午夜精品视频一区二区三区在线看| 欧美在线中文字幕| 日本不卡一区二区在线观看| 免费国产在线精品一区二区三区| 国产在线天堂www网在线观看| 亚洲国产成人久久| 午夜视频在线观看一区二区三区| 亚洲成人偷拍自拍| 少妇精品久久久一区二区| 国产免费av一区| 成年网站免费| 中文字幕在线观看日| 国产乱精品一区二区三区| 欧美精品第一页在线播放| 亚洲国产精品一区二区www| avtt天堂资源网站| 中文在线字幕在线观看| 女同久久另类69精品国产| 91tv国产成人福利| 欧美高清videos高潮hd| 亚洲综合在线免费观看| 国产精品偷伦免费视频观看的| 欧美福利在线观看| 久热中文字幕在线精品免费| 国产熟女精品视频| 亚洲精品国产精品乱码| 美女视频一区在线观看| 日韩欧美高清| 亚洲色图偷拍自拍| 国产精品入口尤物| 隔壁老王国产在线精品| 国产不卡av在线免费观看| 娇小的粉嫩xxx极品| 九九精品视频在线观看九九| 国产主播精品在线| 国产农村妇女精品一二区| 无码人妻av一区二区三区波多野| av大全在线| 特级西西444www| 亚洲精品一区二区三区在线观看| 久草一区二区| 无码人妻精品一区二区50| 少妇视频一区二区| 爱豆国产剧免费观看大全剧苏畅| 日韩视频 中文字幕| 日韩特黄一级片| 欧美自拍偷拍网| 亚洲人成电影网站色…| 女人18毛片水真多18精品| 97精品伊人久久久大香线蕉| 91国偷自产中文字幕久久| 一区二区精品免费| 成人影院在线观看视频| 欧美三级华人主播| 国内成+人亚洲+欧美+综合在线| 亚洲国产美女久久久久| 一个人在线观看免费视频www| 久久综合九色综合97婷婷女人| 国产精品成av人在线视午夜片| 黄色网址免费看| 男人c女人视频| 亚洲成人资源| 亚洲中文字幕久久精品无码喷水| 国产精品igao视频网网址不卡日韩| 亚洲色婷婷一区二区三区| 国产91在线免费观看| 黑人精品一区二区三区| 国产精品被窝福利一区| 中文在线最新版天堂8|