紅黑樹是基於二叉平衡搜尋樹的資料結構為基礎,在基於紅黑樹結構的查詢並不會破壞樹的平衡,所以查詢跟二叉平衡樹的查詢是一樣的。
從根結點開始查詢,把根結點設定為當前結點。
如果當前結點為空時,則以null作為返回。
如果當前結點不為空,則將當前結點的key同要查詢的key作比較。
如果當前結點的key等於查詢的key,那麼該key就是查詢的目標,則返回前結點的值。
如果當前結點的key大於查詢的key,那麼就把當前結點的左子節點設定為當前結點,重複步驟2。
如果當前結點的key小於查詢的key,那麼就把當前結點的右子結點設定為當前結點,重複步驟2。
根據紅黑樹的查詢策略可知,紅黑樹的查詢並不是很複雜,但是簡單並不代表其效率不好。正是由於紅黑樹總是保持黑色完美平衡(紅黑樹的自平衡特性),所以它的查詢最壞時間複雜度為o(lgn),即整棵樹的結點剛好是紅黑相隔的時候。
注:一棵有n個內部結點的紅黑樹的高度最大為2lg(n+1)。
紅黑樹下 紅黑樹的實現
1.實現紅黑樹的基本思想 實際上,紅黑樹是有固定的平衡過程的 遇到什麼樣的節點分布,我們就對應怎麼去調整。只要按照這些固定的調整規則來操作,就能將乙個非平衡的紅黑樹調整成平衡的。首先,我們需要再來看一下紅黑樹的定義 在插入 刪除節點的過程中,第 三 四點要求可能會被破壞,所以 平衡調整 實際上就是把...
紅黑樹下 紅黑樹的實現
1.實現紅黑樹的基本思想 實際上,紅黑樹是有固定的平衡過程的 遇到什麼樣的節點分布,我們就對應怎麼去調整。只要按照這些固定的調整規則來操作,就能將乙個非平衡的紅黑樹調整成平衡的。首先,我們需要再來看一下紅黑樹的定義 在插入 刪除節點的過程中,第 三 四點要求可能會被破壞,所以 平衡調整 實際上就是把...
紅黑樹筆記 紅黑樹的插入操作
紅黑樹的插入操作可以在o logn 的時間內完成。開始插入節點的時候和二叉查詢樹一樣,只需要最後將插入的節點著成紅色,為了保證紅黑樹的性質,需要通過rb insertfixup函式來調整該節點,對其重新著色並旋轉。下面先呼叫rb insert 函式將乙個節點插入到紅黑樹中,同樣先上偽 rb inse...