部落格**
1 紅黑樹是一種二叉查詢樹。
2 紅黑樹的性質。
(1)每個節點是紅色或者黑色
(2)根節點是黑色
(3)葉節點是黑色(葉節點就是空節點,實際不儲存東西)
(4)每乙個紅色節點的兩個孩子都是黑色節點
(5)對於每個節點,從該節點到任意後代葉子節點經過的黑色節點數相同。
(6)滿足二叉查詢樹的性質,即左子樹所有鍵值小於當前節點鍵值,右子樹所有鍵值大於當前節點鍵值。
(7)在滿足上面這些條件時,對於有n個內節點(內節點就是不包含葉節點)的紅黑樹,高度至多為$2log(n+1)$.首先定義乙個節點x的黑高為$bh(x)$,表示從x到任意乙個葉子節點路徑上黑色節點的個數(不包括x)。先證明以某一節點x為根的子樹中至少包含$2^-1$個內節點(不是葉子的都是內節點)。用數學歸納法證明。如果x的高度為0,那麼x是葉節點,包含0個內節點,滿足該式子。對於高度為正值的x,其兩個孩子至少包含$2^-1$個內節點,所以以x為根的子樹至少包含$(2^-1)+(2^-1)+1=2^-1$個內節點。第二步,對於一棵高度為h的樹,任意一條從根到葉節點(不包括根)的路徑上至少有一半黑色節點,從而$bh(x)\geq \frac$,所以$n\geq 2^-1\geq 2^}-1$,即$h\leq 2log(n+1)$
下面是乙個紅黑樹的例子。
3 左旋和右旋操作。對x進行左旋之後將變成右邊,對y進行右旋之後會變成左邊。
4 後繼函式$successor(u)$為節點$u$的後繼結點。後繼定義為樹中大於該節點的最小的節點。在上圖中節21的後繼為23,節點17的後繼為19,節點23的後繼為26.
紅黑樹學習筆記
二叉樹,他的定義是每個節點最多只有兩個子樹 即左子樹和右子樹,當然也可以沒有子樹 如下圖是乙個簡單的二叉樹 對於這樣的資料結構,在c語言中通常這樣來定義結構體?1 2 3 4 5 typedefstruct binary tree binarytree 二叉搜尋樹,首先他也是乙個二叉樹,與二叉樹不同...
紅黑樹學習筆記
因為學習hashmap的時候,遇到了紅黑樹,故而複習哈,想深度學習的請轉到下面鏈結,作者 並茂的詳細講解了哈,分析的很清楚,覺得好的不忘給別人手動比心。30張圖帶你徹底理解紅黑樹 因為從這裡開始,是自己的學習筆記,從上面提到的文章中學習總結的,主要是為了給自己看,記錄哈,容易忘記,純概念,可能比較苦...
紅黑樹學習筆記
1.每個節點不是紅色就是黑色 2.不可能有連在一起的紅色節點 3.根節點都是黑色的 root 沒有父節點的節點就是根節點,即入度為0 4.每個紅色節點的兩個子節點都是黑色,葉子節點都是黑色,出度為0,滿足了性質就可以近似的平衡了,不一定要紅黑,也可以是其他的。紅黑樹有三種旋轉方式 1.改變顏色 紅變...