R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)
红黑树的特性:
- 每一个节点都是有颜色的不是黑色就是红色
- root节点必须是黑色
- 所有的叶子节点是null,黑色
- 每个黑色的节点必须有两个红色的子节点,或者说不能有两个连续的红色节点
- 从任一节点到其子树的叶子节点的黑色节点相同
删除(主要看兄弟节点):
- 删除为红色节点时
- 删除节点为黑色时(假设如图所示为左孩子)
- 删除的节点的兄弟节点为红色,右子树左旋,借一个黑色节点给左子树
- 删除的节点兄弟节点为黑色,且其孩子节点为黑色,将兄弟节点变为红色即可
- 删除节点的兄弟节点为黑色,且其左孩子为黑色节点,右孩子为红色节点,则红色节点肯定有两个黑色孩子,这时就可以将兄弟右孩子的直接左旋
3.删除节点的兄弟节点为黑色,且其左孩子为红色节点,右孩子为黑色节点,则先转换为上情将其况右旋,(因为红色节点在左结点的话只能右旋,而我们是要将右边的黑节点借调到左边),在进行左旋
4.删除节点的兄弟节点为黑色,且其左右孩子都为红色,可直接将右孩子进行左旋