紅-黑樹知識點

紅-黑樹知識點

1、有序數組,對於有序數組(例如哈希表),其查找的效率很高,但是插入效率低。適用於靜態數據。
2、鏈表,對於鏈表的數據結構,其插入和刪除的效率很高,但是查找的效率低。
3、樹,對於樹的結構,綜合了有序數組的查找效率和鏈表的插入和刪除效率,適用於靜態數據。

一、二叉搜索樹(BST樹)
有序的樹結構,樹的左子樹總是比根節點小,右子樹總是比根節點大。

二、二叉平衡樹(AVL樹)
是二叉搜索樹的一種改進。爲了提高查找效率,保持左右子樹的平衡,規定左右子樹的高度最多相差1。

三、紅黑樹
是二叉平衡樹的變種,並不要求完全的平衡,相對於二叉平衡樹,紅黑樹再元素的插入和刪除操作上可以進行更少的旋轉操作,插入和刪除的性能更加優越。

下面主要介紹紅黑樹以及紅黑樹的一些操作,主要有查找、插入和刪除操作。
紅黑樹的平衡規則:
1.節點是紅色或黑色。
2.根節點是黑色。
3.每個葉子節點都是黑色的空節點(NIL節點)。
4 每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點)
5.從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。
下面就是一種紅黑樹:
在這裏插入圖片描述

紅黑樹保持平衡的方法有:變色和旋轉,旋轉分爲左旋和右旋。
漫畫動圖瞭解部分:
https://blog.csdn.net/chudelong1/article/details/82698010
代碼理解部分:
https://blog.csdn.net/eson_15/article/details/51144079?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

C++中是以哦那個紅黑樹的結構來實現的有set和multiset。可以使用此類容器進行實現。

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