紅黑樹--原理,性質與應用

概述

紅黑樹是一棵二叉搜索樹, 主要用在更改比查詢更加頻繁的地方(而二叉平衡樹用在搜索比更改頻繁的地方).
已經的一些性質:

  1. 二叉搜索樹上基本操作所花費的時間與這棵樹的高度成正比.
  2. 對於一棵完全二叉樹, 這些操作的的最壞運行時間爲O(lgn), 如果搜索二叉樹退化爲線性表, 則其最壞的運行時間是O(n).

退化爲線性表的搜索二叉樹, 其操作時間爲O(n):
在這裏插入圖片描述
圖(1)
一棵完全二叉樹的操作時間是O(lgn):
在這裏插入圖片描述
圖(2)

搜索二叉樹,平衡搜索二叉樹,紅黑樹的區別與聯繫

樹種類 是否完全二叉樹 是否自動平衡 查找性能 插入(刪除)性能
搜索二叉樹(BST) 不確定, 如果比較平衡, 則接近於O(lgn), 如果不平衡, 則接近O(N)
平衡二叉樹(AVL) 很好 不太好
紅黑樹 是, 但是不會嚴格平衡

紅黑樹

二叉搜索樹

二叉搜索樹主要有如下性質:

  1. 二叉樹: 扇出(fanout)爲2, 只有2個分叉.
  2. 搜索性: 比如對於父節點x, 其左邊子節y點一定小於父節點, 其右邊子節點z一定大於父節點.

性質

紅黑樹是在滿足二叉搜索樹的基礎上, 再滿足如下性質:

  • 每個節點要麼是紅色的, 要麼是黑色的.
  • 根結點是黑色的.
  • 每個葉子節點是黑色的.
  • 如果一個節點是紅色的, 則它的兩個子節點是黑色的.
  • 對於每個節點, 從該節點到其所有的後代葉子節點的簡單路徑上, 均包含相同數目的黑色節點.

注意: 紅黑樹中, 所有子節點都是空節點, 而用戶插入的節點永遠不是子節點.
圖(3) 一棵顯示有子節點的紅黑樹
在這裏插入圖片描述

旋轉

旋轉是不改變搜索二叉樹的搜索性質的. 即是旋轉之後, 對於任意節點X, 其左子節點Y的值小於父節點X的值, 節點X的右子節點Z的值一定大於等於其父節點X的值.
旋轉的目的是改變樹的高度, 增加樹的操作性能.
我們可以得知如下信息:

  1. 旋轉是發生在搜索二叉樹父節點和子節點之間的.
  2. 旋轉之後搜索二叉樹還是具有搜索性質.
  3. 旋轉一般用作降低二叉樹的高度, 提高在樹上的集合操作的性能.
  4. 旋轉是以父子兩個節點的鏈接線爲支軸的.

參考

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