無限級目錄樹最優演算法的新研究 (轉)
(首先宣告:因為看到許多人對本文的熱心關注,作者對本文稍作修改和補充)
本文具體介紹:1。目錄樹的資料結構
2。探討具體應用中的查詢複雜度。
表結構: id(編號)pid(父節點)nodepath(路徑)nodetype(狀態)
示例資料:1 0 0> F
2 0 0> D
3 2 0>2> D
4 3 0>2>3> F
測試專案:
1。獲取當前節點的父節點:複雜度:O(n)
2。獲取當前節點的下級子節點: 複雜度:O(n)
3。獲取當前節點的所有子孫節點: 複雜度:O(n)
4。獲取當前節點的所有直系祖宗節點: 複雜度:O(n)
5。刪除、新增節點時比較容易實現,主要是實現節點轉移有點麻煩:設被轉移
的節點為S,轉移到的目的節點為T,則S.nodepath=T.nodepath+T.id+'>';同時檢
查S是否有兄弟節點,無則S的父節點的nodetype改為F;檢查T的nodetype,如為F
則改為D;修改表中S的子孫節點nodepath。一般這種情況出現的機率很低。
說明:本人的初衷是將該結構主要應用在類的目錄樹中,根據
nodetype,畫樹的時候不必再搜尋資料庫去判斷該節點是否還有子節點。至於用
在bbs帖子樹,像帖子樹中有一個帖子最新的,就必須將整個帖子樹置頂這樣的
情況,有種實用解決辦法:增加一個欄位id(帖子的根帖): distanct
rootid from table order by postdate。
本資料結構支援無限級樹,關於樹的深度,可以根據實際情況而定nodepath的長
度。最後,我為什麼用“最優”,主要有激將之意,拋磚引玉,只是希望能引起
廣大高手的注意,能提出個人獨特建議,在交流上作廣泛的討論。作者本人也絕
沒有夜郎自大的意思。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991640/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dTree無限級目錄樹和JQuery同步ajax請求jQuery
- Java 教學例子 目錄樹 (初級) (轉)Java
- 無限級樹資料庫版(ASP+ACCESS) (轉)資料庫
- LINUX的目錄樹(轉)Linux
- 目錄樹轉 JSONJSON
- 生存目錄-無層級
- php無限遍歷目錄-修正版PHP
- linux 列出目錄樹 (轉)Linux
- Javascript無限分類演算法(轉)JavaScript演算法
- php無限級分類函式(無極限)PHP函式
- 0001-HTML中上一級目錄、上上級目錄、下一級目錄、下下級目錄中的頁面的相互引用HTML
- PHP中的無限級分類、無限巢狀評論PHP巢狀
- [推薦]無限分級數量查詢優化優化
- 使用遞迴實現樹狀選單(無限級分類)遞迴
- 表示式目錄樹
- ViewPager最簡單的無限輪播Viewpager
- Google Drive無限容量+網頁網站式目錄索引網盤Go網頁網站索引
- 構造無限級樹並深度遍歷查詢指定節點
- 沒有效能瓶頸的無限級選單樹應該這樣設計
- Linux 管理員手冊(2)--目錄樹概述(轉)Linux
- 一個帶CheckBox的樹形目錄javascript的遞迴演算法JavaScript遞迴演算法
- 無限分級 方法總結
- 霍夫曼樹(最優二叉樹)的實現二叉樹
- 深知無限成立歐洲研究院,打造世界級共性技術平臺
- C#-表示式目錄樹C#
- 解析Linux系統根檔案系統的目錄樹(轉)Linux
- 無法建立目錄或檔案 無法建立目錄的解決辦法
- 用VisualC++6.0遞迴查詢目錄樹 (轉)C++遞迴
- 小程式無限層級路由方案路由
- 初級演算法-樹演算法
- 05.表示式目錄樹ExpressionExpress
- 解決:無法使用前導 .. 在頂級目錄上退出
- 谷歌推出無限上下文的新Transformer谷歌ORM
- PHP 無限級分類最佳實踐PHP
- mysql 無限級分類實現思路MySql
- javascript無限級求和程式碼例項JavaScript
- 最優排序演算法排序演算法
- Linux 目錄許可權研究Linux