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

2021-05-27 18:13:00 字數 1145 閱讀 9323

/**

* 紅黑樹的5個性質:

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

* 2)根結點是黑的。

* 3)每個葉結點,即空結點(nil)是黑的。

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

* 5)對每個結點,從該結點到其子孫結點的所有路徑上包含相同數目的黑結點。

*/public class rbtree

} /**

* 當在某個結點nodex上,做右旋操作時,我們假設它的左孩子nodey不是nil[t],nodex可以為樹內任意左孩子不是nil[t]的結點。

* 右旋以nodex到nodey之間的鏈為「支軸」進行,它使nodey成為該孩子樹新的根,而nodey的右孩子b則成為nodex的左孩子。

* @param tree

* @param nodex

*/public void rightroate(node tree,node nodex)

} /**

* 這裡的插入操作類似二叉查詢樹中的過程,只是在最後把新插入結點的color置為red,

* 然後呼叫insertfixup方法來對結點重新著色並旋轉

* @param tree

* @param node

*/public void insertrb(node tree,node node)

public node(int key,string color,node left,node right,node parent)

public int getkey()

public void setkey(int key)

public string getcolor()

public void setcolor(string color)

public node getleft()

public void setleft(node left)

public node getright()

public void setright(node right)

public node getparent()

public void setparent(node parent)

}

紅黑樹(演算法導論)

測試 所用的例子為算導第三版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.如果乙個結...

《演算法導論》筆記 紅黑樹(一)

滿足下面幾個條件的二叉搜尋樹,稱為紅黑樹 1.任何乙個節點都被著色 紅色或是黑色。2.根節點是黑色的。3.所有的nil節點都看成黑色 nil節點是就是乙個假想的或是無實在意義的節點,所有應該指向null的指標,都看成指向了nil節點。包括葉節點的子節點指標或是根節點的父指標 4.如果乙個節點是紅色的...