紅黑樹 自平衡二叉查詢樹

2021-09-12 09:04:59 字數 874 閱讀 7872

簡介:

紅黑樹是一種特定型別的二叉樹,所有資料塊都儲存在節點中。這些節點中的某乙個節點總是擔當起始位置的功能,它不是任何節點的兒子,我們稱之為根節點或根。它有最多兩個"兒子",都是它連線到的其他節點。

如果乙個節點沒有兒子,我們稱之為葉子節點,因為在直覺上它是在樹的邊緣上。子樹是從特定節點可以延伸到的樹的某一部分,其自身被當作乙個樹。在紅黑樹中,葉子被假定為null 或空

由於紅黑樹也是二叉查詢樹,它們當中每乙個節點的比較值都必須大於或等於在它的左子樹中的所有節點,並且小於或等於在它的右子樹中的所有節點。這確保紅黑樹運作時能夠快速的在樹中查詢給定的值。

特點:

節點是紅色或黑色

根節點是黑色

每個葉節點(nil節點,空節點)是黑色的

每個紅色節點的兩個子節點都是黑色。(從每個葉子到根的所有路徑上不能有兩個連續的紅色節點)

從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。

樹的旋**

當我們在對紅黑樹進行插入和刪除等操作時,對樹做了修改,那麼可能會違背紅黑樹的性質。為了保持紅黑樹的性質,我們可以通過對樹進行旋轉,即修改樹中某些結點的顏色及指標結構,以達到對紅黑樹進行插入、刪除結點等操作時,紅黑樹依然能保持它特有的性質

左旋:右旋:

二叉查詢樹 平衡二叉樹 紅黑樹

先看幾個基本概念 樹 由根出發,指向n個孩子,孩子再指向孫子。這樣一種資料結構 二叉樹 每個接點最多有兩個孩子的樹 二叉查詢樹 每個結點的左子樹 結點 右子樹 平衡二叉樹 每個結點左右子樹的高度差不大於1 紅黑樹 從任一節點到其每個葉子的所有簡單路徑 都包含相同數目的黑色節點。當然還有其它性質 幾點...

二叉查詢樹 平衡二叉樹 紅黑樹

平衡二叉樹 首先是一棵二叉查詢樹。帶有平衡條件 每個結點的左右子樹的高度之差的絕對值 平衡因子 最多為1。紅黑樹 雖然本質上是一棵二叉查詢樹,但它在二叉查詢樹的基礎上增加了著色和相關的性質使得紅黑樹相對平衡,從而保證了紅黑樹的查詢 插入 刪除的時間複雜度最壞為o log n 還具體下列的特性 節點是...

平衡二叉樹 紅黑樹

顏色調整,第一種情況uncle存在且為紅色,第二種和第三種情況,uncle不存在 uncle存在且為黑色,先處理第三種情況,針對parent進行左單旋。test.cpp include using namespace std enum colour template struct rbtreenod...