每個節點或是紅色的,或是黑色的。
根節點是黑色的。
每個葉節點(nil)是黑色的。
如果乙個節點是紅色的,則它的兩個子節點都是黑色的。
對每個節點,從該節點到其所有後代葉節點的簡單路徑上,均包含相同數目的黑色節點。
一顆有n個內部節點的紅黑樹的高度至多為2lg(n+1)。
左旋和右旋
left-
rotate
(t, x)
: y = x.right
x.right = y.left
if y.left != t.nil
y.left.p = x
y.p = p
if x.p == t.nil
t.root = y
else
if x == x.p.left
x.p.left = y
else
x.p.right == y
y.left = x
x.p = y
rb-
insert
(t, z)
: y = t.nil
x = t.root
while x != t.nil
y = x
if z.key < x.key
x = x.left
else
x = x.right
z.p = y
if y == t.nil
t.root = z
else
if z.key < y.key
y.left = z
else
y.right = z
z.left = t.nil
z.right = t.nil
z.color = red
rb-insert-
fixup
(t, z)
rb-insert-
fixup
(t, z):
while z.p.color == red
if z.p = z.p.p.left
y = z.p.p.right
if y.color == red
z.p.color = black
y.color = black
z.p.p.color = red
z = z.p.p
else
if z == z.p.right
z = z.p
left-
rotate
(t, z)
z.p.color = black
z.p.p.color = red
right-
rotate
(t, z.p.p)
else
(same as then clause with "right" and "left" exchanged)
t.root.color = black
第七天筆記
理解 陣列的基本概念 理解 陣列的分類 陣列的幾個名詞 陣列的應用場景 按維度分類 掌握 定義陣列 掌握 初始化陣列 掌握 陣列的使用 指定陣列的元素個數,對陣列進行部分顯式初始化 不指定元素個數,定義的同時初始化,它是根據大括號中的元素的個數來確定陣列的元素 個數 int nums 指定元素個數,...
第七天學習
練習題 1 以下類定義中哪些是類屬性,哪些是例項屬性?class c num 0 def init self self.x 4 self.y 5 c.count 62 怎麼定義私有 法?3 嘗試執行以下 並解釋錯誤原因 4 按照以下要求定義乙個遊樂園門票的類,並嘗試計算2個 1個小孩平日票價。要求 ...
react第七天學習筆記
1.antd 是基於ant design設計體系的ui元件庫 0 1 antd環境的配置 const require customize cra module.exports override fixbabelimports import 2 將ui元件環境語言設為中文 import zhcn fr...