查找-之多路查找樹

二叉排序樹或平衡二叉樹(AVL樹、紅黑樹)

查找-之二叉排序樹(查找、插入、刪除)

查找-之平衡二叉樹AVL和紅黑樹

結點只有兩個孩子,且結點只能存儲一個元素

 

問題:

一個結點只存儲1個元素,在元素很多時,使得樹的深度或高度很大

     出現的問題是:內存存取外存的次數非常多-使得時間效率降低

解決方法:

2-3樹

結構:

1970年 約翰·霍普克洛夫發明的多路查找樹,它一個結點具有2孩子(2結點)或3孩子(3結點)

2結點:一個元素+2個孩子(或沒有孩子)

3結點:一大一小2元素+3個孩子(或沒有孩子),3個孩子的排列順序是小、中、大

                                                                         2-3樹結構圖

2-3-4樹

結點具有2孩子(2結點)或3孩子(3結點)或4個孩子(4結點)

結構:

2結點:一個元素+2個孩子(或沒有孩子)

3結點:一大一小2元素+3個孩子(或沒有孩子),3個孩子的排列順序是小、中、大

4結點:小中大3元素+4個孩子(或沒有孩子),  4個孩子的排列順序是小、中、大

 

B樹

Blance-Tree 

一種平衡多路查找樹,其中的2-3樹和2-3-4樹B樹的特例,結點最大的孩子數目稱爲B樹的階,

B樹的孩子數目有可以有多個

其中:

2-3樹最多有3個孩子--3階B樹

2-3-4樹最多有4個孩子--4階B樹

B樹是如何做到減少內存和外存數據交換的次數?

     在處理的硬盤數據量很大,一次無法全部裝入內存--調整B樹的階數和硬盤存儲的頁面大小匹配,讓樹的根結點持久保存在內存中;例如:B樹的階爲1001,則一個結點包含1000個關鍵字,高度爲2,可以存儲10億個關鍵字,那麼在這棵樹上尋找關鍵字至多需要兩次硬盤的讀取。

B樹減少定位記錄時所經歷的中間過程,從而加快存取速度

適用於:內外存數據的交互、 讀寫相對大的數據塊的存儲系統、文件系統的查找、數據庫索引

時間複雜度:O(logn)

缺點是:B樹需要中序遍歷結點,且最壞的情況是在葉子結點找到

B+樹

 在出現分支結點中的元素會被當做該分支結點位置的中序後繼者(葉子結點)再次列出

 

                                             B+樹的存儲結構

和B樹的區別:

1)有n棵子樹的結點中包含n個關鍵字

2)所有葉子結點包含全部的關鍵字信息(所有的數據都在葉子結點),指向含這些關鍵字記錄的指針;其中的葉子結點本身依據關鍵字大小順序連接

3)所有的分支結點可看出索引,結點中僅含有子樹中最大或最小的關鍵字

 

2)點的詳細解析:

所有的數據都在葉子結點非葉子結點中存放元素(用於索引)不存放數據,因此每一層可容納更多的元素,磁盤的IO操作次數相比B樹少;

B+樹的所有葉子結點使用鏈表連接,便於區間查找和遍歷。

 

適用於:文件系統的查找、數據庫索引

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章