//
// 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上,...