红黑树插入

1、红黑树的特性

性质1. 节点是红色或黑色

性质2. 根节点是黑色

性质3.所有叶子都是黑色。(叶子是NUIL节点)

性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)

性质5.. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点

2、插入过程

个人理解,根据性质2,3,5每次插入是均是红色节点,因为 如果根节点为黑色,如果插入是黑色,则无法平衡,只能变色

所以每次插入时节点初始化值是红色

第一步:根节点插入是,红色节点变为黑色节点即可

第二步:查找节点是否存在,存在覆盖即可

第三步:父节点为黑色,直接插入

第四步: 父红(P)叔红(U),根据性质4不能有两个连续的红色节点,故需变色,谁来变色呢?新插入的节点吗,显然不行,这样会违反性质5,故需要父、叔节点同时变黑(因为如果只变一个,原本树是平衡的,变一个显然不平衡了)那么P、U的父节点(GP)必然是黑色需涂红,以GP为新增节点继续遍历

第5步:父红叔黑,插入时与父在同一侧,以GP为支点左或右旋转

第六步:父红叔黑,插入时不再同一侧,已P为支点旋转进入第5步

本文看https://www.jianshu.com/p/96e652ccf720的后自己总结

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值