保持根节点为黑色
- 红黑树的性质之一就是:根节点为黑色;
- 添加元素后,可能导致红黑树根节点的变动,因此要维护根节点为黑色的属性;
// 向红黑树中添加新的元素(key, value)
public void add(K key, V value){
root = add(root, key, value);
root.color = BLACK; // 最终根节点为黑色节点
}
左旋转
- 新添加的节点在黑节点的右侧,才需要左旋转;
// node x
// / \ 左旋转 / \
// T1 x ---------> node T3
// / \ / \
// T2 T3 T1 T2
private Node leftRotate(Node node){
Node x = node.right;
// 左旋转
node.right = x.left;
x.left = node;
x.color = node.color;
node.color = RED;
return x;
}