图解红黑树和JAVA实现

一、红黑树的性质

红黑树是AVL树的一个变种。对红黑树的操作在最坏情形下花费 O ( l o g N ) O(log N) O(logN)时间。
红黑树是具有下列着色性质的二叉查找树:

  1. 每一个结点或者为黑色,或者为红色;
  2. 根是黑色的;
  3. 每个叶结点(NIL)是黑色的;
  4. 如果一个结点是红色的,那么它的两个子结点必须是黑色的;
  5. 对每个结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。

黑高(black-height): 从某个结点 x 出发(不含该结点)到达一个叶结点的任意一条简单路径上黑色结点的个数称为该结点的黑高

一个有n个内部结点的红黑树的高度至多为 2 log ⁡ ( n + 1 ) 2\log(n+1) 2log(n+1)

二、红黑树的操作

1. 理解两个基本操作(左旋和右旋)

这个和AVL树的操作一样,如果理解了AVL树的旋转操作,可跳过该部分。

  • 左旋
    在这里插入图片描述

可以理解为把x的右结点y提起来;

  • 右旋

在这里插入图片描述

右旋可以理解为把x的左节点y提起来;

接下来为了维护红黑树的性质,就需要对结点进行左旋和右旋操作(有的时候需要对同一结点进行连续进行两次旋转,叫做双旋转);

2. insert操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值