為什么MySQL數據庫要用B+樹存儲索引




二叉樹的定義: 二叉樹是一種樹形結構: 特點是與每個節點關聯的子節點至多有兩個(可為0,1,2) 每個節點的子節點有關聯位置關系 定義: 二叉樹是節點的有限集合,該集合或為空集,或由一個根元素和兩棵不相交的二叉樹組成(遞歸定義) 二叉樹的兩棵子樹分別稱為它的左子樹和右子樹 二叉樹的5種基本形態: 空二叉樹 只有根節點 只有左子樹,右子樹為空 只有右子樹,左子樹為空 左右子樹都不為空 滿的和完全的二叉樹: 滿二叉樹:樹中每個分支節點(非葉節點)都有兩棵非空子樹 完全二叉樹:除最下兩層外,其余節點度數都是2,如果最下面的節點不滿,則所有空位都在右邊,左邊沒有空位,如下圖 擴充二叉樹(由已有非空二叉樹生成的一種二叉樹): 是原二叉樹的最小節點擴充,使原樹中所有節點的度數都變成2 二叉樹的性質: 性質1. 非空二叉樹第 i 層上至多有 2i 個結點(i ≥ 0) 性質2. 高度為 k 的二叉樹至多有 2k-1 個結點(k ≥ 0) 性質3. 對任何非空二叉樹 T,若其葉結點個數為 n0,度數為 2 的結點 個數為 n2,則n0 = n2 + 1 性質4. n 個結點的完全二叉樹的高度 k = ⎡log2(n+1)⎤ 性質5. 滿二叉樹里的葉結點比分支結點多一個 二叉樹的數據結構 基本操作 創建二叉樹 一棵二叉樹或為空(用 None 表示),或是兩棵已有二叉樹和要存在樹根結點的一項數據,構造起的根結點代表構造出的二叉樹: BiTree(dat, left, right) 判斷樹空:is_empty(bitree) 訪問操作,訪問二叉樹的組成成分: 訪問二叉樹的根結點數據元素:data() 取得一棵二叉樹的左右子樹:right(),left() case ... esac 與其他語言中的 switch ... case 語句類似,是一種多分枝選擇結構。 case 語句匹配一個值或一個模式,如果匹配成功,執行相匹配的命令。case語句格式如下: ​ case工作方式如上所示。取值后面必須為關鍵字 in,每一模式必須以右括號結束。取值可以為變量或常數。匹配發現取值符合某一模式后,其間所有命令開始執行直至 ;;。;; 與其他語言中的 break 類似,意思是跳到整個 case 語句的最后。 ​ 取值將檢測匹配的每一個模式。一旦模式匹配,則執行完匹配模式相應命令后不再繼續其他模式。如果無一匹配模式,使用星號 * 捕獲該值,再執行后面的命令

 

1. 樹

 

2. 紅黑樹

3. 紅黑樹。。。

4. 紅黑樹的定義和如何實現的就不要說了,說說紅黑樹的優點

5. 二叉排序樹【左邊比根節點小,后邊比根節點大】

6. 二叉排序樹的退化

 

 7. 紅黑樹

8.因為:

 

 

 

 9.B樹

 

 

 

 

 

 10. 文件系統用B樹,不用紅黑樹或別的呢

 

 

 

 

 

 

 

 

 

 11. B+ 樹

 

 

 

 

如果是多條的話,B 樹需要做局部的中序遍歷,可能要跨層訪問。

而 B+ 樹由於所有數據都在葉子結點,不用跨層,同時由於有鏈表結構,只需要找到首尾,通過鏈表就能把所有數據取出來了。

 

 

 


 

 

回到現場

 

HAHAHA

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM