特點它在二叉查詢樹的基礎上增加了著色和相關的性質使得紅黑樹相對平衡,從而保證了紅黑樹的查詢、插入、刪除的時間複雜度最壞為o(log n)。
1)每個結點要麼是紅的,要麼是黑的。
2)根結點是黑的。
3)每個葉結點(葉結點即指樹尾端nil指標或null結點)是黑的。
4)如果乙個結點是紅的,那麼它的倆個兒子都是黑的。
5)對於任一結點而言,其到葉結點樹尾端nil指標的每一條路徑都包含相同數目的黑結點。
樹旋轉包括兩個不同的方式,分別是左旋轉(以p為轉軸)和右旋轉(以q為轉軸)。兩種旋轉呈映象,而且互為逆操作。
當在某個結點pivot上,做左旋操作時,我們假設它的右孩子y不是nil[t],pivot可以為任何不是nil[t]的左孩子結點。
左旋以pivot到y之間的鏈為「支軸」進行,它使y成為該孩子樹新的根,而y的左孩子b則成為pivot的右孩子。
參考**(以x代替上述的pivot):
left-rotate(t, x)
y ← right[x] ▹ set y.
right[x] ← left[y] ▹ turn y's left subtree into x's right subtree.
p[left[y]] ← x
p[y] ← p[x] ▹ link x's parent to y.
if p[x] = nil[t]
then root[t] ← y
else
if x = left[p[x]]
then
left[p[x]] ← y
else
right[p[x]] ← y
left[y] ← x ▹ put x on y's left.
p[x] ← y
nginx 未完待續
yum install y pcre yum install y pcre devel yum install y openssl yum install y openssl devel yum install y zlib yum install y gccyum安裝 yum install y ...
sqlparse(未完待續)
sqlparse.split sql,encoding none sql 包含乙個或多個sql語句的字串 encoding 語句的編碼 可選 sql select from foo select from bar sql list sqlparse.split sql print sql list ...
CALayer使用(未完待續)
一 什麼是calayer?在ios系統中,你能看得到摸得著的東西基本都是uiview。比如乙個按鈕 乙個文字標籤 乙個文字輸入框 乙個圖示等等,這些都是uiview。其實uiview之所以顯示在螢幕上,完全是因為它內部的乙個層。在建立uiview物件時,uiview內部會自動建立乙個層 即calay...