Java之理解红黑树

红黑树(一棵特殊的自平衡的二叉查找树)

优化的二叉查找树, 用于高效的查找数据.

红黑树的性质

  1. 每个节点不是红色就是黑色
  2. 根节点为黑色
  3. 叶子节点为黑色
  4. 不能出现连续的两个红色节点
  5. 每个红色节点的两个子节点都是黑色
  6. 插入节点默认是红色

红黑树的玩法

玩法介绍

  1. 一个节点的父节点成为它的父亲
  2. 一个节点的父节点的兄弟节点称为它的叔叔
  3. 一个节点的父节点的父节点称为它的爷爷

1. 红黑变色

初始指针指向本节点,
如果本节点的父亲和叔叔都是红色, 则父亲和叔叔变为黑色, 爷爷变为红色, 指针指到爷爷位置, 继续操作

2. 左旋(向左转)

如果本节点(我)的父亲和叔叔为一红一黑(父亲为红, 叔叔为黑), 我如果是父亲的右孩子, 则进行左旋
父亲和我动
第一步: 我的左孩子交给父亲做右孩子
第二步: 我上去
第三步: 父亲下来

3. 右旋(向右转)

如果本节点(我)的父亲和叔叔为一红一黑(父亲为红, 叔叔为黑), 我如果是父亲左孩子, 则进行右旋
父亲和爷爷动
(父亲变为黑色, 爷爷变为红色)
第一步: 父亲的右孩子做爷爷的左孩子
第二步: 父亲上去
第三步: 爷爷下来

猜你喜欢

转载自blog.csdn.net/Beyond_Nothing/article/details/114701934