既然我們要說紅黑樹,我們就要了解紅黑樹是一種完美自平衡的二叉查詢樹,
接下來說一下二叉查詢樹的特點:有點像二分查詢
右子樹的值大於根節點的值
左節點的值小於根節點的值
左右子樹也一定是二叉排序樹
接下來說一下紅黑樹的特點:
根節點必須是黑色的
每個節點都有顏色,要麼是紅色,要麼是黑色的
每個葉子的節點都是黑色的空節點(null)
每個紅色節點的兩個子節點都是黑色的,如果有紅色就要變形,自旋等操作
從任意節點到其每個葉子的所有路徑都包含相同的黑色節點。
為什麼需要需要紅黑樹的結構,為什麼說他是完美平衡,二叉查詢樹與之有何不一樣,
二叉查詢樹都是從根節點然後往兩邊找,但是如果乙個樹他是左撇子或者右撇子,那時間複雜度將會達到最高
所以紅黑樹完美平衡在,他5個性質保證了左右子樹黑色節點的路勁一致,查詢並不會出現左右撇子。
下面看乙個漫畫加深理解一下紅黑樹的
插入預設都是插入紅色節點,因為插入黑色節點必定會影響性質5,從而改變整個樹的結構
整個樹是空的,那麼插入就要變紅色為黑色
父結點為黑色,那麼即正常插入的情況
父結點,祖父節點和插入的位置成了三點一線,三角關係,就要發生自旋
插入的時候,父結點與伯父節點(父結點的兄弟)都是紅色,那麼就要讓父結點伯父節點還有祖父節點變色,如果因此變色改變了樹的結構那麼就要重新按照1,2,3,4步驟再次變形
你了解紅黑樹嗎?資料結構 紅黑樹
紅黑樹的介紹 紅黑樹的五條性質 紅黑樹的關鍵操作 引言因為博主最近在學習hashmap的原始碼,因為自從jdk1.8之後,hashmap就是由陣列 鍊錶 紅黑樹實現的,所以為了更深的去了解hashmap的原理,先來帶大家一起複習一下紅黑樹的知識 紅黑樹是乙個平衡二叉樹,但不是絕對完美的平衡二叉樹,紅...
教你了解紅黑樹(HashMap 1 8)
若任意節點的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若任意節點的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 任意節點的左 右子樹也分別為二叉查詢樹。沒有鍵值相等的節點 no duplicate nodes 每個結點要麼是紅的要麼是黑的。根結點是黑的。每個葉結點 葉結點即指...
紅黑樹下 紅黑樹的實現
1.實現紅黑樹的基本思想 實際上,紅黑樹是有固定的平衡過程的 遇到什麼樣的節點分布,我們就對應怎麼去調整。只要按照這些固定的調整規則來操作,就能將乙個非平衡的紅黑樹調整成平衡的。首先,我們需要再來看一下紅黑樹的定義 在插入 刪除節點的過程中,第 三 四點要求可能會被破壞,所以 平衡調整 實際上就是把...