演算法導論筆記 紅黑樹 1

2022-07-17 00:27:18 字數 623 閱讀 6012

//

//  rb_tree.cpp

//  筆記

////  created by fam on 15/3/17.

////

//rb_tree

或 bh(x-1):

所以x擁有的自節點個數至少為 2*2^(bh(x)-1)-1 == 2^(bh(x))-1

由此得證:每個x節點至少包含 2^(bh(x))-1

個子節點

根據第3個條件,一條路徑至少包含一半的黑色節點-->>

bh(x)>=h/2 -->>  n>=2^(h/2)-1 -->> lg(n+1) >=h/2 

-->> h<=2lg(n+1) (lg表示log2)

得證樹高最大為2lg(n+1)

所以rb_tree所有操作時間為o(lg(n));

*///左旋轉操作

//對x進行左旋轉

left-rotate(t,x)

else

y.left=x;           用完了(之前給x.right賦值完就可以存放x了),拿來存放旋轉後的值(x);

x.p=y;             

用完了,可以拿來存放旋轉後的值

(y)了

}

紅黑樹(演算法導論)

測試 所用的例子為算導第三版p179圖13 4 include using namespace std const bool black 0 黑色 const bool red 1 紅色 struct node 結點結構 class rb tree 初始化nil結點和root node left r...

演算法導論 紅黑樹

原文 組內培訓,講紅黑樹,找出演算法導論,啃了乙個週末,其中插入結點很簡單,刪除結點有點複雜,但跟著演算法導論上一步一步來沒有什麼問題。不想備份blog的,所以沒有把上穿。可直接察看ppt。紅黑樹性質 1.每個節點或是紅的,或是黑的 2.根節點是黑的 3.每個葉結點 nil 都是黑的 4.如果乙個結...

演算法導論學習筆記 紅黑樹

紅黑樹的5個性質 1 每個結點要麼是紅的,要麼是黑的。2 根結點是黑的。3 每個葉結點,即空結點 nil 是黑的。4 如果乙個結點是紅的,那麼它的倆個兒子都是黑的。5 對每個結點,從該結點到其子孫結點的所有路徑上包含相同數目的黑結點。public class rbtree 當在某個結點nodex上,...