樹 紅黑樹(通俗易懂)

2021-06-25 17:23:11 字數 935 閱讀 3601

由於紅黑樹本質上就是一棵二叉查詢樹,所以在了解紅黑樹之前,咱們先來看下二叉查詢樹。

二叉查詢樹(binary search tree),也稱有序二叉樹(ordered binary tree),排序二叉樹(sorted binary tree),是指一棵空樹或者具有下列性質的二叉樹:

因為,一棵由n個結點,隨機構造的二叉查詢樹的高度為lgn,所以順理成章,一般操作的執行時間為o(lgn).(至於n個結點的二叉樹高度為lgn的證明,可參考演算法導論 第12章 二叉查詢樹 第12.4節)。

但二叉樹若退化成了一棵具有n個結點的線性鏈後,則此些操作最壞情況執行時間為o(n)。後面我們會看到一種基於二叉查詢樹-

紅黑樹,它通過一些性質使得樹相對平衡,使得最終查詢、插入、刪除的時間複雜度最壞情況下依然為o(lgn)

。紅黑樹

前面我們已經說過,紅黑樹,本質上來說就是一棵二叉查詢樹,但它在二叉查詢樹的基礎上增加了著色和相關的性質使得紅黑樹相對平衡,從而保證了紅黑樹的查詢、插入、刪除的時間複雜度最壞為o(log n)。

但它是如何保證一棵n個結點的紅黑樹的高度始終保持在h = logn的呢?這就引出了紅黑樹的5條性質:

1)每個結點要麼是紅的,要麼是黑的。  

2)根結點是黑的。

3)每個葉結點(葉結點即指樹尾端nil指標或null結點)是黑的。

4)如果乙個結點是紅的,那麼它的倆個兒子都是黑的。

5)對於任一結點而言,其到葉結點樹尾端nil指標的每一條路徑都包含相同數目的黑結點。

正是紅黑樹的這

5條性質

,使得一棵n個結點是紅黑樹始終保持了logn的高度,從而也就解釋了上面我們所說的「紅黑樹的查詢、插入、刪除的時間複雜度最壞為o(log n)」這一結論的原因。

如下圖所示,即是一顆紅黑樹(下圖引自wikipedia:

關於插入和刪除,未完待續

通俗易懂的紅黑樹簡析

紅黑樹本質上是一棵近似平衡的二叉樹,它的節點只有兩種顏色即紅與黑,它滿足二叉搜尋樹的基本性質,即樹上的任何節點的值大於其左子節點 若左子節點存在 任何節點的值大於其右子節點的值 若右子節點存在 近似平衡 深度最大的節點的深度 2 深度最小的節點的深度。具體如何保證這種近似平衡後面會說到。紅黑樹與平衡...

紅黑樹的部分易懂內容

嚴重參考 紅黑樹的定義 及性質 是一種二叉搜尋樹,有序的 做的改進是 對節點新增了 顏色分層 red 或者 black 的特性,紅黑平衡,保持了紅黑樹lgn高度。為了保證二叉樹的高度,保證搜尋 刪除 插入的 時間複雜度為 lgn.性質 每個節點顏色 非黑即紅 根節點為黑色 每個葉子節點都是黑色 這裡...

最容易懂的紅黑樹

性質一 節點是紅色或者是黑色 性質二 根節點是黑色 性質三 每個葉節點 nil或空節點 是黑色 性質四 每個紅色節點的兩個子節點都是黑色的 也就是說不存在兩個連續的紅色節點 就是連續的兩個節點不能是連續的紅色,連續的兩個節點的意思就是父節點與子節點不能是連續的紅色。性質五 從任一節點到其沒個葉節點的...