紅黑樹詳解

一、本博客主要內容:
1、二叉查找樹簡要介紹
2、2-3樹簡要介紹
3、紅黑的性質,特點
4、紅黑樹的查找過程
5、紅黑樹節點插入過程
6、紅黑樹節點刪除過程
7、紅黑樹代碼實現

二、紅黑樹背景
講解紅黑樹之前,先了解一下二叉查找樹和2-3樹的概念,這有助於我們理解紅黑樹的作用及實現過程。
1、二叉查找樹性質特點:
二叉查找樹是一個操作效率很高的樹,平局時間複雜度爲O(logN)
二叉查找樹的節點鍵值關係:左節點 < 根 < 右節點
節點的操根據節點鍵值之間的關係進行操作。
缺點:二叉查找樹對樹的平衡未進行處理,當數據接近有序時,樹退化成一個單鏈表,操作效率變低,時間複雜度爲O(N)。
解決方法:對樹的平衡進行調整。
方法:2-3樹,紅黑樹,AVL樹。
二叉查找樹操作鏈接:
2、2-3樹簡要介紹:
1、2-3樹是一個完美平衡的查找樹,通過增加節點的鍵值和分支,保證樹的平衡。
2、2-3樹不是一個二叉樹,一個節點由兩個子節點/三個子節點組成
3、2-3樹的節點由一個或兩個鍵值組成
4、2-3樹是自下向上生長的樹。二叉查找樹是一個自上向下生長的樹。
5、2-表示節點有一個鍵值,兩個子樹,key < 節點左鍵值key,則key存在左子樹
6、3-表示節點有兩個鍵值,兩個/三個子樹,key < 節點左鍵值key,則key存在左子樹,key > 節點右鍵值key,則key存在右子樹,key在節點左右鍵值key之間,則key存在中子樹中。
7、2-3樹的插入:先通過4找到插入節點
插入節點只有一個key:則將將該key插入到該節點中,然後對鍵值進行順序調整(左 < 右)
插入節點有兩個鍵值:將該鍵值插入到該節點中,按順序調整後,取出中間key插入到父節點中,同時將該節點拆分成兩個節點,作爲父節點的左/中子樹或中/右子樹。若父節點的鍵值也爲2,則同上繼續向上處理,直到根節也爲3個鍵值時,取出中間key作爲新的根節,將原有節點拆爲左右子樹。
8、圖解及2-3樹的插入過程:
在這裏插入圖片描述

9、缺點:2-3樹不是一個二叉樹,且樹是向上生長的,每個節點都不相同,且存在相互變換過程,狀態比較多,不容易維護,節點的插入過程比較複雜,需大量的算法進行處理。
解決辦法:只要將2-3樹進行稍加修改,使用一個標記標記3-節點,將3-節點拆成2-節點,即使用二叉樹來表示,再增加一些規定即可保證樹的平衡同時,簡化節點的操作。即所謂的紅黑二叉查找樹(紅黑樹)。

三、紅黑樹
1、通過2-3樹的介紹我們對紅黑樹的實現有了一定的瞭解。現在來介紹2-3樹到紅黑樹的變化過程。
在這裏插入圖片描述

通過以上圖片,我們對紅黑樹有了清楚的理解,知道紅黑樹爲何要如此定義了。
現在就是我們如何利用紅黑樹的性質,構建紅黑樹了。這點下次講解!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章