【数据结构】深入分析红黑树

目录

一、为什么要学习红黑树?

二、红黑树的基本介绍

三、图解+代码实现红黑树添加元素流程

首先分析向2-3树中的2节点插入元素

1.插入左孩子

2.插入右孩子 

接下来分析向2-3树中的3节点插入元素

1.插入右孩子(颜色反转filpColors)

2.插入左孩子(右旋转)

四、总结红黑树的添加元素过程

①:向2-3树的2节点添加元素(分为插入的元素是左孩子还是右孩子)

②:向2-3树中的3节点添加元素(也分为插入左孩子和右孩子)

五、完善红黑树添加元素方法代码


一、为什么要学习红黑树?

首先,我们知道二分搜索树存在缺陷,就是如果插入的元素是顺序的则二分搜索树就变成和链表一样了,这样就会带来性能问题。

为了改变上图中的情况,就出现了AVL平衡二叉树,在平衡二叉树中规定了一个节点的左右孩子高度之差不能超过1,如果当插入或者删除了节点导致左右孩子高度差超过了1,就需要进行左旋或者右旋操作进行调整,总之平衡二叉树的性值保证了树中的节点不会出现上图,这样也就保证了其查询的时间复杂度为logn。

那么平衡二叉树在我们看来已经很优秀了,为什么还会有红黑树这种树结构出现呢?这是由于尽管AVL平衡树的查询效率非常高,但是有利就有弊,AVL树为了维持绝对的平衡(左右孩子高度差不超过1),就要符出更多的代价,每次插入、删除都可能需要进行调整以保证平衡,所以这就降低了插入、删除操作的性能,对于频繁的插入、删除的数据集合,如果使用AVL树代价就有点高了。

这时红黑树就出现了,红黑树仅仅是做到了近似平衡,没有达到严格意义上左右孩子高度差不能大于1,所以

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值