红黑树(一棵特殊的自平衡的二叉查找树)
优化的二叉查找树, 用于高效的查找数据.
红黑树的性质
- 每个节点不是红色就是黑色
- 根节点为黑色
- 叶子节点为黑色
- 不能出现连续的两个红色节点
- 每个红色节点的两个子节点都是黑色
- 插入节点默认是红色
红黑树的玩法
玩法介绍
- 一个节点的父节点成为它的父亲
- 一个节点的父节点的兄弟节点称为它的叔叔
- 一个节点的父节点的父节点称为它的爷爷
1. 红黑变色
初始指针指向本节点,
如果本节点的父亲和叔叔都是红色, 则父亲和叔叔变为黑色, 爷爷变为红色, 指针指到爷爷位置, 继续操作
2. 左旋(向左转)
如果本节点(我)的父亲和叔叔为一红一黑(父亲为红, 叔叔为黑), 我如果是父亲的右孩子
, 则进行左旋
父亲和我动
第一步: 我的左孩子交给父亲做右孩子
第二步: 我上去
第三步: 父亲下来
3. 右旋(向右转)
如果本节点(我)的父亲和叔叔为一红一黑(父亲为红, 叔叔为黑), 我如果是父亲左孩子
, 则进行右旋
父亲和爷爷动
(父亲变为黑色, 爷爷变为红色)
第一步: 父亲的右孩子做爷爷的左孩子
第二步: 父亲上去
第三步: 爷爷下来