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

首頁 > 開發 > 綜合 > 正文

項目開發中層次結構存儲的兩種設計方法

2024-07-21 02:43:22
字體:
來源:轉載
供稿:網友
在實際的項目開發中,我們經常會碰到存儲多級數據結構(樹狀)的問題。下面,我們來介紹一下層次結構存儲的兩種設計方法:

1:鄰接表模式(adjacency list model)

2:先根遍歷樹算法(modified PReorder tree traversal algorithm)

參考數據結構:

中國

|

|---陜西

| |

| |---渭南

| |

| |--- 西安

| |

| |--鐘樓

| | |

| | |--大雁塔

|

|---云南

| |

| |---麗江

1:鄰接目錄模式:

一般情況下,我們在數據庫中增加一個parent字段表示這個節點的父節點,從而將整個樹狀描述出來

如:

parent name

中國

中國 陜西

中國 云南

陜西 渭南

陜西 西安

云南 麗江

西安 鐘樓

西安 大雁塔

等這樣我們就能夠通過數據庫保存整個樹狀結構啦。

通過這種方法需要得到一個多級結構時候需要進行一個遞歸, 通過遞歸的方法我們可以得到任意節點的路徑。

這種方法的優點是簡單,容易理解。缺點是運行速度很慢。尤其是數據量很大的時候需要進行很多查詢時候才能完成一個樹, 效率很低。

2:先根遍歷樹算法

將多級數據按照下面的格式劃出來

1 中國 16

|

+------------------------+

2 陜西 11 12 云南 15

| |

+-------------+ 13 麗江 14

3 渭南 4 5 西安 10

|

+-----------+

6 鐘樓 7 8 大雁塔 9

我們給根節點“中國”左側標上1, 然后沿著這個樹向下在“陜西”左側標上2, 然后繼續前進, 向下在“渭南”左側標上3, 渭南沒有子節點,所以在“渭南”右側標上4, 然后繼續“渭南”的右側節點。。。沿著整個樹的給每個節點的左側和右側標上數字。最后一個數組標在“中國”右側為16。 你只要用手指從1指到16就知道怎么回事啦。

這些數字表明了各個節點之間的關系。我們可以看到, 所有左側大于2, 右側小于11的節點,都是“陜西”的子節點。

這樣我們可以在數據庫中用left, right表示左右數字。如:

我們給根節點“中國”左側標上1, 然后沿著這個樹向下在“陜西”左側標上2, 然后繼續前進, 向下在“渭南”左側標上3, 渭南沒有子節點,所以在“渭南”右側標上4, 然后繼續“渭南”的右側節點。。。沿著整個樹的給每個節點的左側和右側標上數字。最后一個數組標在“中國”右側為16。 你只要用手指從1指到16就知道怎么回事啦。

這些數字表明了各個節點之間的關系。我們可以看到, 所有左側大于2, 右側小于11的節點,都是“陜西”的子節點。

這樣我們可以在數據庫中用left, right表示左右數字。如:

name left right

中國 1 16

陜西 2 11

云南 12 15

渭南 3 4

西安 5 10

鐘樓 6 7

大雁塔 8 9

麗江 13 14

這樣我們如果想得到 "陜西"下的所有節點。只需要執行:

select * from table where left between 2 and 11;

要想知道“西安”的路徑只需要執行:

select * from table where left < 5 and right > 10;

計算某個節點有多少子孫節點: 子孫節點數=(右值-左值-1)/2;

要算出所有節點的左右值, 數據庫中需要parent字段,然后編寫一個計算左右值遞歸函數執行。(這里略去不談)。

主要考慮如何進行一個子節點的增加,刪除。

◆方法1: 在數據庫中保留parent字段, 增加節點后,調用計算左右值遞歸函數重新計算左右值。 該方法不推薦用

◆方法2: 改變所有位于新節點右側的左右值。

比如:想添加“華清池”作為“西安”的最后一個節點,我們給它挪出一個空間,“西安”的右值改為12, “陜西”的右值改為13, “云南”及其子節點的左右值從“12-15”改為 “14-17”, “中國”的右值改為18。即給左右值大于9的所有節點加2 (9為西安最后一個子節點的右值)

update table set right=right+2 where right > 9;

update table set left=left+2 where left > 9;

這樣就給新節點騰出空間,它的左右值分別為 9+1, 9+2;

insert into table set left=10, right=11, name='華清池';

當然,刪除一個節點時候給左右值大于該節點右值的所有節點減2。

注釋:以上兩種方法的采用根據我們可以針對具體情況來酌情考慮,假如查詢量小但頻繁添加,刪除則建議采用第一種。假如查詢量偏大,我們可以考慮使用第二種方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久婷婷天堂| 精品国产91乱高清在线观看| 97色伦亚洲国产| 国产亚洲成av人片在线观看桃| 国产性色av一区二区| 亚洲一区二区中文| 日韩在线精品一区| 一区二区三区天堂av| 亚洲第一福利在线观看| 九九久久久久99精品| 久热精品视频在线免费观看| 伊人久久精品视频| 日韩视频免费在线观看| 亚洲国产成人一区| 国产精品丝袜视频| 久久精视频免费在线久久完整在线看| 亚洲人高潮女人毛茸茸| 91po在线观看91精品国产性色| 日韩最新中文字幕电影免费看| 久久露脸国产精品| 色吧影院999| 久久国产精品免费视频| 欧美疯狂性受xxxxx另类| 成人在线免费观看视视频| 日韩精品免费综合视频在线播放| 久久精品免费播放| 欧美精品在线网站| 色综合久久悠悠| 最近2019中文字幕大全第二页| 欧美电影在线观看网站| 久久免费高清视频| 久久久久久久成人| 欧美激情奇米色| 亚洲欧美第一页| 国产69精品久久久久99| 日韩中文在线中文网三级| 日韩av中文在线| 欧美中文字幕精品| 欧美高清视频在线观看| 亚洲一区二区中文| 在线视频欧美日韩| 日韩在线视频免费观看高清中文| 亚洲欧洲激情在线| 大量国产精品视频| 亚洲一区二区少妇| 九九热这里只有在线精品视| 欧美日韩国产一区二区三区| 久久99精品国产99久久6尤物| 精品毛片三在线观看| 欧美人与物videos| 亚洲欧美三级在线| 亚洲999一在线观看www| 国产视频精品在线| 国产精品久久久久9999| 欧美性高潮床叫视频| 成人在线视频网| 91精品91久久久久久| 久久久久女教师免费一区| 88xx成人精品| 国产精品久久99久久| 欧美午夜精品久久久久久人妖| 亚洲第一天堂无码专区| 亚洲va欧美va国产综合久久| 欧美成人国产va精品日本一级| 国语自产在线不卡| 亚洲国产日韩欧美在线图片| 欧美日韩中文在线观看| 亚洲乱亚洲乱妇无码| 亚洲最大的av网站| 91亚洲精华国产精华| 精品久久久国产精品999| 亚洲美女中文字幕| 亚洲激情在线视频| 成人午夜两性视频| 亚洲欧美激情四射在线日| 久久久久成人精品| 欧美精品电影免费在线观看| 中文字幕精品一区久久久久| 欧美亚洲在线观看| 久久夜色精品国产| 日韩欧美国产网站| 国产成人一区二区在线| 久久久亚洲天堂| 欧美肥老太性生活视频| 日本免费一区二区三区视频观看| 国产视频在线一区二区| 亚洲欧美另类国产| 日韩电影免费在线观看| 视频一区视频二区国产精品| 欧美裸体男粗大视频在线观看| 欧美国产日韩二区| 亚洲最新中文字幕| 亚洲成年人在线| 91久久精品在线| 成人羞羞国产免费| 日韩一区在线视频| 亚洲专区中文字幕| 国产精品高潮呻吟视频| 国产精品igao视频| 成人激情春色网| 久久久久久97| 国产成人在线一区| 91精品国产沙发| 国产有码在线一区二区视频| 日韩免费在线看| 欧美午夜精品久久久久久浪潮| 狠狠躁夜夜躁人人躁婷婷91| 亚洲图中文字幕| 国产亚洲aⅴaaaaaa毛片| 日韩av中文字幕在线| 亚洲第一中文字幕在线观看| 97精品国产aⅴ7777| 久久久av免费| 国产91色在线|免| 欧美性极品少妇精品网站| 亚洲成人动漫在线播放| 欧美激情欧美激情在线五月| 91免费看视频.| 精品久久香蕉国产线看观看亚洲| 久久精品国产亚洲精品2020| 欧美在线性爱视频| 精品亚洲一区二区三区在线播放| 亚洲成人久久久久| 国产一区二区色| 国产精品午夜一区二区欲梦| 国产成人涩涩涩视频在线观看| 久久97精品久久久久久久不卡| 国产成人精品免费视频| 亚洲天堂av网| 欧美午夜精品久久久久久人妖| 尤物tv国产一区| 亚洲va欧美va国产综合剧情| 国模gogo一区二区大胆私拍| 国产精品一区二区三区在线播放| 欧美xxxx综合视频| 日本久久久久久久久| 亚洲美女av电影| 欧美韩日一区二区| 亚洲欧美国内爽妇网| 日韩美女主播视频| 久久综合色影院| 8050国产精品久久久久久| 亚洲国产高清福利视频| 欧美精品手机在线| 亚洲午夜精品视频| 中文字幕精品视频| 国产91精品久久久久久| 91av在线影院| 91系列在线观看| 色综合久综合久久综合久鬼88| 91在线视频免费| 日本午夜在线亚洲.国产| 一本色道久久88综合日韩精品| 亚洲欧洲一区二区三区在线观看| 欧美极品少妇xxxxⅹ裸体艺术| 日韩av电影手机在线| 国产精品久久久久免费a∨| 91成人精品网站| 欧美激情精品久久久久久大尺度| 国产成人一区二区三区小说| 亚洲天堂av网| 麻豆精品精华液| 精品中文字幕在线观看| 国产欧美一区二区三区视频|