初識紅黑樹

2021-07-27 03:42:47 字數 934 閱讀 5371

紅黑樹的五個基本特性

1.每個節點要麼是紅的,要麼就是黑的

2.根節點一定是黑的

3.每個葉子節點一定是黑的,就是(nil)

4.如果乙個雙親節點是紅的,那麼他的子節點一定是黑的

5.對每個節點,從該節點到其子孫節點的所有路徑上包含相同數目的黑節點

紅黑樹的插入和刪除操作會違背紅黑樹的原有性質,為了避免出實現這種情況,我們要做兩方面的工作

1.給部分節點重新著色

2.調整指標的指向

左旋

leftroate(t, x)  

y ← x

.right //定義y:y是x的右孩子

x.right ← y

.left //y的左孩子成為x的右孩子

if y

.left ≠ t.nil

y.left

.p ← x

y.p ← x

.p //x的父結點成為y的父結點

if x

.p = t.nil

then t.root ← y

else if x = x

.p.left

then x

.p.left ← y

else x

.p.right ← y

y.left ← x //x作為y的左孩子

x.p ← y

紅黑樹的插入和插入修復

紅黑樹的插入會影響樹的平衡,為了解決這種問題,我們按照實際出現的問題,把他總結成了三種情況

初識紅黑樹

查詢很簡單,跟二叉查詢樹是類似的,以上圖為例,查詢8的話,首先跟根節點13比較,8小於小於13,於是去左子樹中查詢,8又大於6而小於9於是去這個結點的中子樹中查詢,命中。插入是非常重要的一步,正是在插入上邊體現了2 3樹的自下向上生長,保持了樹的平衡。也因此,插入要複雜一點點,我們分情況討論 2 3...

無聊的木頭 初識set(紅黑樹)

c 有著豐富的函式以及各種容器,這極大的精簡的 在看火影第二部的時候,我們都知道,為了節省查克拉的使用,進而產生了一種容器,容器裡面裝有特定的技能,只要我們發射容器,就會產生和本身技能同樣的效果,這不僅節省了查克拉的使用,而且操作簡單,每個人都可以使用 c set容器有著異曲同工之妙 set容器封裝...

紅黑樹下 紅黑樹的實現

1.實現紅黑樹的基本思想 實際上,紅黑樹是有固定的平衡過程的 遇到什麼樣的節點分布,我們就對應怎麼去調整。只要按照這些固定的調整規則來操作,就能將乙個非平衡的紅黑樹調整成平衡的。首先,我們需要再來看一下紅黑樹的定義 在插入 刪除節點的過程中,第 三 四點要求可能會被破壞,所以 平衡調整 實際上就是把...