1. 紅黑樹(Red Black Tree)
(1) 定義
紅黑樹(Red Black Tree):是一種自平衡的二叉搜索樹倘是,也叫平衡二叉B樹般婆。
- 紅黑樹必須滿足一下5條性質(zhì):
- 節(jié)點(diǎn)是
或者
![]()
- 根節(jié)點(diǎn)是
![]()
- 葉子節(jié)點(diǎn)(外部節(jié)點(diǎn)跛梗,空節(jié)點(diǎn))都是
![]()
節(jié)點(diǎn)的子節(jié)點(diǎn)都是
節(jié)點(diǎn)的parent都是
從根節(jié)點(diǎn)到 葉子節(jié)點(diǎn) 的所有路徑上不能有2個(gè)連續(xù)的節(jié)點(diǎn)
- 從任一節(jié)點(diǎn)到 葉子節(jié)點(diǎn) 的所有路徑都包含相同數(shù)目的
節(jié)點(diǎn)
紅黑樹
(2) 紅黑樹的等價(jià)變換
紅黑樹 和 4階B樹 (2, 4)樹 具有等價(jià)性
節(jié)點(diǎn)與它的
子節(jié)點(diǎn)融合在一起关串,形成1個(gè)B樹節(jié)點(diǎn)
- 紅黑樹的
節(jié)點(diǎn)個(gè)數(shù) 與 4階B樹的節(jié)點(diǎn)總個(gè)數(shù) 相等
紅黑樹
等價(jià)變換成 4階B樹
(3) 紅黑樹的添加刪除
- B樹中训枢,新元素必定是添加到 葉子節(jié)點(diǎn)中
- B樹中再膳,最后真正被刪除的元素都在 葉子節(jié)點(diǎn)中
(4) 平均時(shí)間復(fù)雜度
- 搜索:
![]()
- 添加:
腮考,
次的旋轉(zhuǎn)操作
- 刪除:
雇毫,
次的旋轉(zhuǎn)操作
(5) AVL樹 和 紅黑樹
AVL樹
- 平衡標(biāo)準(zhǔn)比較嚴(yán)格:每個(gè)左右子樹的高度差不超過1
- 最大高度是:1.44 *
- 1.328(100萬個(gè)節(jié)點(diǎn),最大樹高28)
- 搜索踩蔚、添加棚放、刪除都是
復(fù)雜度
添加僅需次旋轉(zhuǎn)調(diào)整,刪除最多需要
次旋轉(zhuǎn)調(diào)整
紅黑樹
- 平衡標(biāo)準(zhǔn)比較寬松:沒有一條路徑會(huì)大于其他路徑的2倍
- 最大高度是:2 *
(100萬個(gè)節(jié)點(diǎn)馅闽,最大樹高40)
- 搜索飘蚯、添加、刪除都是
復(fù)雜度
添加福也、刪除僅需次旋轉(zhuǎn)調(diào)整
- 大量搜索時(shí)使用AVL樹局骤,搜索、添加暴凑、刪除次數(shù)差不多時(shí)使用紅黑樹
- 紅黑樹犧牲部分平衡性峦甩,平均統(tǒng)計(jì)性能優(yōu)于AVL樹
- 實(shí)際應(yīng)用中更多選擇使用 紅黑樹
(6) 樹的比較
10, 35, 47, 11, 5, 57, 39, 14, 27, 26, 84, 75, 63, 41, 37, 24, 96
二叉搜索樹BST
AVL樹
紅黑樹RBTree