红黑树的简析

红黑树其实算是一种特殊的二叉查找树,二叉正常的时候时间复杂度为O(logN),但是当它出现链表情况的时候,会不一样,查询链表数据时间复杂度会变为O(N);
红黑树通过几个特性,基本规避了二叉查找树出现链表的情况,也就是说,红黑树基本上就是不会出现链表的二叉查找树。

红黑色的特性,必须满足
根节点必须是黑色,无父节点;
红色节点不可以连到一条线;
叶子节点必须是黑色,即最下层,NIL
从任一节点出发到其每个叶子节点的路径,黑色节点的数量必须相等

特点
当你存入数据,删除数据的时候,树的结构就会产生变化,可能会变得不满足红黑树的特性;
然后红黑树可以根据变换颜色,左旋右旋,使结构变得满足红黑树的特性,即增删后,通过各种变换,自动变的符合;

下面有个不错的例子,可以通过例子自行体会;
在这里插入图片描述
目的,插入一个新的数6,(变换规则:插入的新数据默认为红色),即插入后,变为图1,两个红色,不符合,
通过变换颜色:(父节点,叔节点皆为红色)将父节点,叔节点都变为黑色,祖父节点改为红色;
此时,祖父节点(12)和大祖父节(5)点都为红,不符合,还得变换,
此时情况:以祖父节点(12)为当前节点,12的父节点(红色)和叔节点(黑色),出现这种情况,可以使用左旋或右旋:
在这里插入图片描述
进行左旋(因为当前节点是右节点):将12移到5的位置,5和1下移,7改连到5上,7下面的不变:
在这里插入图片描述
变为图3,此时还是不符合,继续右旋(因为当前节点为5,且为左节点,父节点为红色,叔节点为黑):
1将父节点12变为黑色,
2祖父节点19变为红色,
3以祖父节点19作为旋转点

步骤一样,12上移,19下移,13重新指向19;即为最终图4;

此时满足红黑树的特性,转换完成!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值