二叉樹對比紅黑樹

2021-10-09 22:27:55 字數 1016 閱讀 7984

參考:

為了解決查詢的問題,減少查詢磁碟的io。

二叉樹: 

規定值根節點大於左節點,小於右節點。

當大量插入有序資料,造成結構線性化,引出平衡二叉樹(規定葉子節點的高度差不超過1)。

平衡二叉樹:通過旋轉來維持平衡。

紅黑樹(沒有規定葉子節點的高度差不大於1):

1紅黑樹只追求近似平衡,所以在插入與刪除節點時,翻轉次數遠遠少於平衡樹,因此在需要較多插入刪除操作的場景中,使用紅黑樹更好。

2 通過一定的規則來保證平衡(變色,左旋轉,右旋轉)

b-樹:

是一種多路搜尋樹(並不是二叉的):

1.定義任意非葉子結點最多只有m個兒子;且m>2;

2.根結點的兒子數為[2, m];

3.除根結點以外的非葉子結點的兒子數為[m/2, m];

b-樹的特性:

1.關鍵字集合分布在整顆樹中;

2.任何乙個關鍵字出現且只出現在乙個結點中;

3.搜尋有可能在非葉子結點結束;

4.其搜尋效能等價於在關鍵字全集內做一次二分查詢;

5.自動層次控制;

由於限制了除根結點以外的非葉子結點,至少含有m/2個兒子,確保了結點的至少

利用率,其最底搜尋效能為:

其中,m為設定的非葉子結點最多子樹個數,n為關鍵字總數;

所以b-樹的效能總是等價於二分查詢(與m值無關),也就沒有b樹平衡的問題;

由於m/2的限制,在插入結點時,如果結點已滿,需要將結點**為兩個各佔

m/2的結點;刪除結點時,需將兩個不足m/2的兄弟結點合併;

b+樹的引入: 隨著樹高度的增加,頻繁的i/o操作一定會降低查詢的效率。所以b樹就被搞出來降低樹的高度,從而減少磁碟的訪問。

參考:應用場景:

二叉樹 紅黑樹

也就是說,二叉排序樹中,左子樹都比節點小,右子樹都比節點大,遞迴定義。根據二叉排序樹這個特點我們可以知道,二叉排序樹的中序遍歷一定是從小到大的,比如上圖,中序遍歷結果是 1 3 4 6 7 8 10 13 14 效能取決於 public class demo public static void m...

紅黑二叉樹

紅黑二叉樹 紅黑二叉樹的基本思想是想用標準的二叉查詢樹 完全由2 結點構成 和一些額外的資訊 替換3 結點 來表述2 3樹。或者說,我們將3 結點表示為由一條左斜的紅色鏈結相 兩個2 結點其中之一是另乙個的左子節點 連的兩個2 結點。這種表示的優點 我們無需修改就可以直接使用標準二叉查詢樹的get ...

二叉樹(三) 紅黑樹

紅黑樹是一種自平衡的二叉查詢樹,可解決二叉查詢樹因為多次插入新節點導致的不平衡問題。除了二叉查詢樹的基本特性外,還具有下列的特性 1 節點是紅色或者黑色 2 根節點是黑色 3 每個葉子節點都是黑色的空節點 nil節點 4 每個紅色節點的兩個子節點都是黑色。從每個葉子到根的所有路徑上不能有兩個連續的紅...