Java之理解红黑树

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

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

红黑树的性质

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

红黑树的玩法

玩法介绍

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

1. 红黑变色

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

2. 左旋(向左转)

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

3. 右旋(向右转)

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_大木_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值