日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

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

php:樹形結構的算法 3

2024-09-08 23:18:45
字體:
來源:轉載
供稿:網友


    那么對于這樣的結構我們該如何增加,更新和刪除一個節點呢? 增加一個節點一般有兩種方法:
  
  保留原有的name 和parent結構,用老方法向數據中添加數據,每增加一條數據以后使用rebuild_tree函數對整個結構重新進行一次編號。
  效率更高的辦法是改變所有位于新節點右側的數值。舉例來說:我們想增加一種新的水果"strawberry"(草莓)它將成為"red"節點的最后一個子節點。首先我們需要為它騰出一些空間。"red"的右值應當從6改成8,"yellow 7-10 "的左右值則應當改成 9-12。 依次類推我們可以得知,如果要給新的值騰出空間需要給所有左右值大于5的節點 (5 是"red"最后一個子節點的右值) 加上2。 所以我們這樣進行數據庫操作:
  
  update tree set rgt=rgt+2 where rgt>5;
  update tree set lft=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
  還是兩種方法之比較
  posted by 訪客 on 2004, march 17 - 8:30pm.
    仔細研究了一下這篇文章,覺得受益非淺,但后來又想了想,覺得有一下問題(為了好記憶,毗鄰目錄模式我稱為遞歸的方法,預排序遍歷樹算法我稱為預排序樹的方法):
  
  1、兩種方法比較大的區別是遞歸是在查詢的時候要用到堆棧進行遞歸,預排序樹則是在更新節點時要進行半數(指所插入節點的后半部分)節點的更新。雖然您也說了,如果節點多了,更新又頻繁,預排序樹效率會降低,采用遞歸會好些,而如果節點層次較多的話,首先遞歸會導致堆棧溢出,再者遞歸本身效率就不高,加上每一層遞歸都要操作數據庫,總體效果也不會理想。我目前的做法是一次性把數據全取出來,然后對數組進行遞歸操作,會好一些;再進一步改進的話,可以為每行記錄增加一個root根節點(目前是只記錄相鄰的父節點),這樣在查找分支樹時效率就會比較高了,更新樹的時候也是十分便捷的,應該是一種比較好的方式。
  
  2、改進遞歸的方式,文章中在計算預排序樹節點的左右值的時候其實也用到了一種遍歷方式,通過數組替代堆棧,手工實現壓棧和彈出;這種方法如果引用到遞歸算法中,在進行遞歸的時候也用數組替代堆棧的話,也可以提高遞歸的效率的。
  
  3、并發,如果考慮到并發的情況,尤其是更新樹的時候,預排序樹大面積更新節點信息的方法需要額外注意采用加鎖和事務的機制保證數據一致性。
  
  4、多根節點或者多父節點的情況,在這種情況下,顯然就不是一個標準的二叉樹或者多叉樹了,預排序樹算法需要進行比較大的改進才能適應,而遞歸的方法則應用自如,所以在這種情況下,遞歸的適應性較強。這是當然的了,因為遞歸的方法就是鏈表的一種形式,樹、圖都可以用鏈表來表達,當然適應力強了。
  
  5、直觀,如果不用程序操作,直接觀察數據庫中存儲的數據的話,顯然遞歸方式下存儲的數據比較直觀,而預排序樹的數據很難直接閱讀(針對層次關系來說),這在數據交換中是不是會有影響呢?
  
    總體來說,我個人比較喜歡用遞歸的方法,但一直擔心遞歸對效率的影響,所幸還沒有接觸過規模較大的分類層次,遞歸用數組替代堆棧會是一種比較好的改進方法。而預排序樹不失為一種解決簡單樹的高效方法,用習慣了,也應該是非常出色的,尤其是它從葉子節點到根節點的反向查找非常方便。
  
  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強大的數組操作,用循環來進行遞歸。注釋里是一種相近的方法,只是處理結果的時機不同而已。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
日韩欧美不卡视频| 国产1卡2卡三卡四卡网站| 最近高清中文在线字幕在线观看1| 在线精品视频免费播放| 欧美日韩激情在线一区二区三区| 中文字幕欧美日韩在线不卡| 中文字幕 亚洲一区| 欧美中文字幕精品| 91精品久久久久久蜜臀| 久久久精品日韩欧美| 精品久久蜜桃| 国产视频一二区| 中文字幕在线官网| 国产一二三精品| 在线观看91精品国产入口| 日韩欧美国产高清91| 中文字幕亚洲区| 一区二区三区在线免费| 欧美亚洲免费高清在线观看| 一级片免费网站| 亚洲视频 中文字幕| 91欧美在线| 亚洲影视资源网| www.精品视频| 在线中文免费视频| 欧美国产一区视频在线观看| 亚洲一区在线观看网站| 日韩精品手机在线观看| 日韩亚洲一区中文字幕| 欧美一级久久| 国产专区中文字幕| 91久久精品网| 在线观看免费国产成人软件 | 欧美日韩精品免费看| 国产九九在线| 中文字幕亚洲字幕| 国产高清大尺度一区二区不卡| 亚洲福利精品在线| 国产一卡2卡3卡四卡网站| 99国产成 人 综合 亚洲欧美| 国产欧美久久久| 亚洲v中文字幕| 蜜桃精品视频| 不卡视频一区二区| 国产午夜精品一区二区三区视频| 精品一二三四| 中文字幕 欧美 日韩| 欧美日韩中文精品| 欧美日韩国产专区| 亚洲福利一区二区三区| 中文字幕视频在线免费欧美日韩综合在线看| 一级片免费在线播放| 国产综合成人久久大片91| 成人一区二区不卡免费| 欧美日韩亚洲第一| 欧美日韩精品欧美日韩精品| 国产一二三精品| 在线日韩中文字幕| 日韩视频一区二区在线观看| 日韩欧美国产高清| 一二三区精品福利视频| 欧美性生交大片免费| 欧美日韩国产高清视频| 亚洲最新永久观看在线| 麻豆精品视频入口| 中文字幕精品在线| 欧美日韩综合不卡| 黄色片免费看| 快she精品国产999| 日韩视频在线一区二区三区| 精品视频123区在线观看| 欧美日韩精品电影| h片精品在线观看| 日韩视频一区| 人人做人人澡人人爽欧美| 中文字幕 亚洲视频| 亚洲久草视频| 亚洲大片精品永久免费| 国产日韩精品视频| 日韩字幕在线观看| 国产网站欧美日韩免费精品在线观看| 久久99精品国产| 欧美日韩国产成人| 中文字幕伊人| 成人xxxx| 亚洲高清在线观看一区| 欧美日韩综合高清一区二区| 色综合婷婷久久| 免费看黄资源大全高清| 中文字幕最新精品| 国产黄色在线免费观看| 国产欧美久久久精品影院| 粉嫩粉嫩芽的虎白女18在线视频| 91精品国产91| 精品三级av| 国产在线黄色片| 亚洲一区不卡在线| 中文字幕在线亚洲| www中文字幕在线观看| 欧美三级视频在线| 国产日韩免费| 久精品在线观看| www.精品视频| 欧美日韩国产综合视频在线观看| 午夜av一区| www.老鸭窝.com| 欧美一级日韩不卡播放免费| 欧美日韩一二三| 欧美 日韩 综合| 不卡视频一区二区| 国产高清精品在线| 亚洲黄色www| 欧美亚洲专区| 色综合婷婷久久| 中文天堂在线一区| 一区二区欧美国产| 日韩欧美高清在线视频| 精品国产999| 欧美日韩国产一二三| 亚洲v中文字幕| 日韩专区中文字幕| 不卡av免费在线| 欧美日韩综合在线观看| 日韩欧美一级在线| 日韩一级在线视频| 国产乱码午夜在线视频| 99国内精品| 成人精品国产福利| 欧美日韩在线第一页| 国产日韩av一区| 日韩www在线| 久久精品免费在线观看| 亚洲一区在线观看视频| 日韩欧美国产免费播放| 欧美日韩精品中文字幕| 日韩中文字幕视频在线观看| 日韩中文字幕网| 日韩在线观看精品| 亚洲 欧美 精品| 国产黄色一区| 亚洲伊人婷婷| 日韩欧美在线1卡| 亚洲欧美久久234| 日韩中文字幕视频网| 91久久大香伊蕉在人线| 国产字幕中文| 亚洲高清免费一级二级三级| 国产导航在线| 日韩欧美不卡在线| 免费视频国产一区| www.中文字幕在线观看| 国产欧美日韩在线视频| 国产偷久久久精品专区| 日韩精品丝袜在线| wwwav91com| 91精品国产自产| 国产综合成人久久大片91 | 精品色蜜蜜精品视频在线观看| 色综合久久六月婷婷中文字幕| 免费国产成人看片在线| 亚洲三级av| 最近中文av字幕在线中文| 欧美一级欧美三级在线观看| 亚洲久草视频| 亚洲视频一二三四| 日韩一级免费在线观看| 亚洲欧美中文在线视频| 国产永久免费高清在线观看| 亚洲综合在线小说| 欧美日韩国产首页| 一区二区三区在线播放欧美| 亚洲一级在线| 69堂精品视频在线播放| 国产日韩电影| 欧美日韩国产免费观看| 欧美日韩在线网站| 日韩精品大片| 亚洲一区在线观看免费| 日韩精品中文在线观看| 在线观看一区日韩| 婷婷中文字幕一区三区| 亚洲素人一区二区| 五月天久久比比资源色| 91精品免费在线观看| 欧美日韩国产系列| 欧美一级一级性生活免费录像| 日本不卡免费高清视频| 欧美色视频一区二区三区在线观看| 亚洲免费观看视频| 欧美国产日韩在线播放| 日韩在线观看a| 日韩精品视频免费看| 中文字幕在线看精品乱码| 国产一级免费看| 在线一区免费| 亚洲欧美日本另类| 欧美日韩免费精品| 正在播放日韩精品| 日韩欧美999| 在线中文字幕网站| 日韩不卡一区二区| 欧美日韩视频在线| 国产小视频免费在线网址| 91精品国产高清91久久久久久| 成人xxxx| 91精品国产91久久久久青草| a√免费观看在线网址www| 亚洲九九精品| 国产99在线 | 亚洲| 99国产成 人 综合 亚洲欧美| 日韩欧美国产黄色| 中文在线一区| 国产91久久久久蜜臀青青天草二| 中文字幕最新精品| 婷婷精品进入| 亚洲国产www| 欧美中日韩在线| 亚洲一区在线观看网站| 国产中文在线播放| 亚洲国产www| 日韩视频在线免费播放| 久久婷婷国产| 国产日韩精品电影| 国产999在线观看| 久久精品夜夜夜夜久久| 欧美日韩一区二区在线视频| 国产资源在线观看| 国产激情99| 国产日产一区二区| 一区二区在线高清视频| 久久精品网站免费观看| 中文字幕日韩高清| 欧美日韩亚州综合| 在线视频国内一区二区| 国产福利一区二区精品秒拍| 国产三级做爰在线观看| 国产一二三四| 一区二区精品| 中文在线不卡视频| 国产成人综合av| 国产三级精品在线观看| 久久精品国产视频| 国产欧美日韩成人| 日本a级黄色| 欧美大片在线观看一区| 久久99精品久久久久婷婷| 福利一区二区| 国产亚洲一区字幕| 欧美日韩成人综合| 粉嫩喷白浆久久| 精品午夜av| 国产123在线| 日韩中文欧美在线| 快she精品国产999| 欧美日韩免费不卡视频一区二区三区| 欧美日韩中文字幕在线| 日韩不卡高清视频| 视频一区视频二区中文| 久久久99精品久久| 国产婷婷在线观看| 欧美国产三级| 国产欧美日韩在线播放| 日韩亚洲国产欧美| 视频一区三区| 中文字幕在线观看播放| 国产日韩av一区| 国产www在线观看| 黄色欧美日韩| 国产不卡一区二区在线观看| 国内精品99| 欧美亚洲天堂| 欧美一级日韩一级| 亚洲三级国产| av中文网站| 久久99精品久久久久久青青日本 | 91精品久久久久| 成人久久在线| 日本视频久久久| 精品乱人伦一区二区三区| 欧美日韩免费视频| 精品日韩在线| 国产免费电影网站入口| 欧美一级在线免费| 欧美日韩久久不卡| 欧美日韩国产中文精品字幕自在自线 | 国产绿帽一区二区三区| 日韩精品在线观| 国产三级做爰在线观看| 国产欧美日韩最新| 亚洲va中文字幕| 中文字幕亚洲字幕| 亚洲大胆人体av| 日韩视频一区| 日韩在线视频精品| 精品亚洲综合| 亚洲影视资源网| 欧美日韩国产一区在线| 国产婷婷一区二区| 精品久久久视频| 91精品久久久久久久91蜜桃| 亚洲娇小xxxx欧美娇小| 蜜桃久久久久| 亚洲成av人片在线| 精品久久香蕉国产线看观看gif| 日韩欧美一卡二卡| 中文字幕五月欧美| 欧美日韩国产一二| 欧美三级日韩三级国产三级| 欧美日韩综合不卡| 91久久精品国产91性色69| 国产99对白在线播放| 91麻豆免费视频网站| 国产区在线看| 亚洲第一网中文字幕| 欧美日韩国产综合久久| 亚洲成a人片在线www| 成人久久久久| 一区在线播放视频| 久久婷婷中文字幕| 免费视频国产一区| 亚洲视频电影在线| 亚洲成av人片| av一级在线| 国产综合成人久久大片91| 日韩欧美国产网站| 国产永久在线观看| 欧美成人一区二区| 欧美日韩免费精品| 91精品国产91久久久久久青草| 亚洲欧洲一区二区天堂久久| 国产在线不卡一区| 欧美高清一区| 亚洲理论中文字幕| 欧美久久在线| 91精品啪在线观看国产60岁| 在线视频第一页| 欧美日韩人人澡狠狠躁视频| 亚洲欧美小说国产图片| 欧美日韩中文在线| 精品网站999www| 视频一区二区精品的福利| 日韩国产一区三区| 国产95在线|亚洲| 国产在线欧美日韩| 91精品国产色综合久久久蜜香臀| av三级在线观看| 久久99精品久久久久久青青日本| 欧美日韩在线不卡| 99pao成人国产永久免费视频| 久久婷婷中文字幕| 日韩国产一区三区| 欧美在线视频二区| 欧美日韩久久久| 国产欧美日韩在线看| 在线欧美日韩精品| 精品日韩在线观看| 精品国产1区2区3区| 欧美日韩视频不卡| 亚洲一区在线视频观看| 精品在线一区二区三区| 国产成人精品免费网站| 日韩欧美在线视频日韩欧美在线视频| 久久久精品日韩| 视频一区视频二区中文| 91精品国产91久久久久久青草| 中文字幕日韩第一页| 黄色一区二区视频| 最近中文字幕第一页| 精品在线网站观看| 国产欧美日韩综合| 欧美日韩国产免费| 午夜国产福利一区二区| 国产乱码午夜在线视频| 日韩欧美国产高清| 91精品国产91久久久久| 国产色在线 com| 日韩精品在线观看网站| 精品视频资源站| 成人xxxx| 国产欧美日韩综合| 丰满少妇一区二区| 精品欧美日韩精品| 日韩一级在线免费观看| 91色在线看| 色综合久久88色综合天天免费| 久久婷婷综合国产| 中文欧美字幕免费| 91xxx在线观看| 一区二区视频在线| 一区二区三区视频网站| 精品国产1区2区3区| 欧美 日韩 国产在线| 久久69成人| 国产黄色小视频| 日韩精品欧美在线| 欧美不卡123| 九七久久人人| 中文字幕精品一区二区三区在线| 日韩福利视频导航| 国产一卡2卡3卡免费网站|