一招彻底帮你搞定HashMap源码,震撼来袭免费下载!

前言

统一说明一下,楼主是研究生,一般的985毕业,之前在工作了6年,做过的大项目数不胜数,

比如再造淘宝项目落地实战,某滴网约车项目,多人在线即时对战网游服务器,和家云服务平台,前后端分离某喵微信商城,亿级流量多级缓存平台,亚马逊电商个性化推荐系统,IOT流云式平台,阿里巴巴中台实战,年初跳槽后去阿里面试6轮之后定级是P6。

二、面试题

面:考你几个红黑树的知识点🦀

  1. 红黑树的数据结构都用在哪些场景,有什么好处?
  2. 红黑树的时间复杂度是多少?
  3. 红黑树中插入新的节点时怎么保持平衡?

面:2-3树都是不没看,回去等消息吧!

三、2-3树与红黑树的等价性

红黑树规则

1. 根节点是黑色
2. 节点是红黑或者黑色
3. 所有子叶节点都是黑色(叶子是NIL节点,默认没有画出来)
4. 每个红色节点必须有两个黑色子节点(也同样说明一条链路上不能有链路的红色节点)
5. 黑高,从任一节点到齐每个叶子节点,经过的路径都包含相同数目的黑色节点

那么,这些规则是怎么总结定义出来的呢?接下里我们一步步分析讲解。

1. 为什么既有2-3树要有红黑树

首先2-3树(读法:二三树)就是一个节点有1个或者2个元素,而实际上2-3树转红黑树是由概念模型2-3-4树转换而来的。-4叉就是一个节点里有3个元素,这在2-3树中会被调整,但是在概念模型中是会被保留的。

虽然2-3-4树也是具备2-3树同样的平衡树的特性,但是如果直接把这样的模型用代码实现就会很麻烦,且效率不高,这里的复杂点包括;

  1. 2-叉、3-叉、4-叉,三种结构的节点类型,互相转换复杂度较高
  2. 3-叉、4-叉,节点在数据比较上需要进行多次,不像2-叉节点,直接布尔类型比较即可非左即右
  3. 代码实现上对每种差异,都需要有额外的代码,规则不够标准化

所以,希望找到一种平衡关系,既保持2-3树平衡和O(logn)的特性,又能在代码实现上更加方便,那么就诞生了红黑树。

2. 简单2-3树转红黑树

2-3树转红黑树,也可以说红黑树是2-3树2-3-4树的另外一种表现形式,也就是更利于编码实现的形式。

简单转换示例;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值