红黑树是一颗二叉查找树
- 红黑树的节点不是红色就是黑色
- 叶子节点的是黑色(NIL)
- 根节点都是黑色的root
- 红色节点的两个子节点一定是黑色的,不可能存在两个相连的红色节点
- 黑高:任意一个节点的叶子的节点路径上的黑节点数量是相同的
- 如果一个节点存在一个黑子节点,那么该节点必然有两个子节点
1,三种基本操作
-
变色
-
左旋
- 右旋
2,查找:与二叉搜索树一样
3,插入:新建节点必须是红色的
4.1, 存在叔节点需要进行的处理
如图所示需要插入的是q节点:那么G节点是红色,存在叔叔节点 爷-父-叔-子 是黑红红红
需要进行的操作是 父-叔变黑,爷变红,将爷爷设置为当前节点,返回3进行操作(递归)
4.2,不在叔叔节点或者叔叔节点是黑色的情况
4.2.1, LL双红
首先红黑树+二叉搜索树的性质,其最小子结构必然是图中情况
- 首先将父节点B与爷节点A颜色互换
- 然后进行右旋操作
4.2.2, LR双红
- B节点左旋 得到LL双红的情况
4.3,4.2的镜像问题
4.3.1,RR双红
- 父祖换色
- 左旋
4.3.2,RL双红
- 右旋变为RR双红的情况