左倾红黑树 ( L L R B ) (LLRB) (LLRB)
左倾红黑树从概念上讲是一颗2-3树,不过这颗2-3树是使用二叉树形式实现的。
每个节点都有一个颜色,如果是红色,表示该节点的父亲和该节点组成了2-3树中的3叉节点,即利用节点和其颜色信息联合起来 表示2-3树中的3叉节点。
旋转操作
NODE* LBTree::rotate_left(NODE* node) {
NODE* res = node->rc;
node->rc = res->lc;
res->lc = node;
swap(res->color, node->color);
return res;
}
NODE* LBTree::rotate_right(NODE* node) {
NODE* res = node->lc;
node->lc = res->rc;
res->rc = node;
swap(res->color, node->color);
return res;
}
插入
插入的过程完全可以类比2-3树的插入:
-
如果待插入的叶子节点只有一个键,那么直接插入,类比到左倾红黑树,就是插入到该叶子节点的左侧(如果是右侧则左旋),并置节点的颜色为红色。