1.红黑树的5个标准性质:
1.所有节点非红即黑。
2.根节点为黑。
3.最后的NULL节点为黑。
4.红节点的孩子一定为黑。
5.黑平衡
(其中B代表黑节点;R代表红节点)
B
/ \
B R
B
/ \
R R
不满足性质4:
B B
/ \
R R
/ \
R R
2.什么是2节点,3节点
2节点: 有一个结点有两个子节点。 3结点:有两个结点3个子节点。
17 33 : 是3结点,6 12 小于17 ,17<18<33,33<37.
50 是2节点: 48 小于50 ,66 88 大于50
什么是绝对平衡?
从根节点到任意叶子节点所经过的节点相同。
节点融合:添加一个结点
再添加一个12 ,由于37的子节点为空,新节点不会添加到空,则 节点融合:12 37 42 。分裂成子树
37
12 42
再添加一个结点:18 此时结点会与叶子结点12 融合:
6 应该要添加到12的左子树 ,但是左子树为空。所以与叶子结点融合 6 12 18.
6 12 18 : 拆解
12结点的父节点是37 是二节点 12向上融合:
插入5 形成:5 6 11 再分裂:
此时不平衡: 6 向上融合 :6 12 37 四结点。
四结点分裂:成3个二节点。这个案例本来根节点是42 后面插入的元素都小于这个结点。那么如果是二叉搜索树的话此时应该很倾斜了,但是23树还是保持平衡。
如果插入4 则会暂时形成4结点 (2 4 5),拆分 2 -4 5 ,再向上融合 4 6 。
颜色翻转和右旋转
右旋转: node.left=T1
x.right=node
由于node 42 :是黑色 则x的颜色也应该是黑色。
x.color=node.color;
对应到23树中, 12-----37----42 还是临时的四节点。
node.color=RED;