红黑树 旋转

一颗非严格均衡的二叉搜索树

他有着6个规则

  1. 节点分为红色和黑色

  2. 根节点必须为黑色

  3. 叶子节点都为黑色,且为null

  4. 连续红色节点的两个子节点都为黑色,不会有相邻的红色节点

  5. 从任意的节点出发,到其每个叶子节点路径中包含相同数量的黑色节点,就是从任何节点出发,到达的每一个叶子节点的路上,都是经过数量一致(不会多也不会少)的黑色节点

  6. 新加入到红黑树的节点为红色节点

当不满足这几个规则的时候,就会开启自动平衡机制调整节点平衡状态

变色

当出现两个相邻的红色的时候,那么新加入的红色节点的父节点,就会去改变颜色。当然是在满足规则的情况下,进行变色,但有些时候通过变色并不会完全满足红黑树,所以这时候就需要旋转来解决

旋转

左旋:逆时针去旋转两个节点,让一个节点被其右子节点取代,然后这个节点成为这个右节点的左子节点

右旋:顺时针去旋转两个节点,让一个节点被其左节点取代,然后这个

节点成为这个左节点的右子节点

左左节点旋转(就是父节点和插入的节点都是左边的节点):以祖父节点进行右旋变色

左右节点旋转(就是父节点是左节点,插入的是右节点):先把父节点进行左旋,然后祖父节点进行右旋,最后变色

右左节点旋转(就是父节点是右节点,插入的是左节点):先父节点右旋,然后祖父节点进行左旋,最后变色

右右节点旋转(就是父节点和插入的节点都是右边的节点):以祖父节点进行左旋变色

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值