參考:
https://blog.csdn.net/wanderlustLee/article/details/81297253
為了解決查找的問題,減少查找磁盤的io。
二叉樹:
規定值根節點大於左節點,小於右節點。
當大量插入有序數據,造成結構線性化,引出平衡二叉樹(規定葉子節點的高度差不超過1)。
平衡二叉樹:通過旋轉來維持平衡。
紅黑樹(沒有規定葉子節點的高度差不大於1):
1紅黑樹只追求近似平衡,所以在插入與刪除節點時,翻轉次數遠遠少於平衡樹,因此在需要較多插入刪除操作的場景中,使用紅黑樹更好。
2 通過一定的規則來保證平衡(變色,左旋轉,右旋轉)
B-樹:
是一種多路搜索樹(並不是二叉的):
1.定義任意非葉子結點最多只有M個兒子;且M>2;
2.根結點的兒子數為[2, M];
3.除根結點以外的非葉子結點的兒子數為[M/2, M];

1.關鍵字集合分布在整顆樹中;
2.任何一個關鍵字出現且只出現在一個結點中;
3.搜索有可能在非葉子結點結束;
4.其搜索性能等價於在關鍵字全集內做一次二分查找;
5.自動層次控制;
由於限制了除根結點以外的非葉子結點,至少含有M/2個兒子,確保了結點的至少
利用率,其最底搜索性能為:
其中,M為設定的非葉子結點最多子樹個數,N為關鍵字總數;
所以B-樹的性能總是等價於二分查找(與M值無關),也就沒有B樹平衡的問題;
由於M/2的限制,在插入結點時,如果結點已滿,需要將結點分裂為兩個各占
M/2的結點;刪除結點時,需將兩個不足M/2的兄弟結點合並;
鏈接:https://www.jianshu.com/p/332caf8bed3a
B+樹的引入: 隨着樹高度的增加,頻繁的I/O操作一定會降低查詢的效率。所以B樹就被搞出來降低樹的高度,從而減少磁盤的訪問。
參考:
https://blog.csdn.net/wanderlustLee/article/details/81297253
https://blog.csdn.net/liang3720/article/details/81700748
應用場景:https://blog.csdn.net/qq_36183935/article/details/81095212
