红黑树(插入)

一颗高度为h的二叉查找树的操作时间复杂度都为O(h),如果二叉树高度较高时(不平衡)时间复杂度就不是很好。红黑树是许多平衡查找树中一种,它能保证最坏情况下,基本的动态集合操作为O(logn)
1. 红黑树的性质
1)、每个节点不是红就是黑
2)、根节点是黑
3)、每个叶节点是黑
4)、如果一个节点是红,则它的2个儿子是黑
5)、对于每个节点,该节点到其子孙叶子节点的所有路径包含相同数目的黑节点。
2、红黑树的插入(较为简单)
首先默认:先插入到合适位置,赋上红色,然后进行调整!!!!!!!
第一步:插入合适位置,赋上红色。
《》第一步结束时那些性质会破坏呢? 性质1)和性质3)显然永远不会被破坏!!,因为新插入节点的子女都是哨兵。性质5)也不会被破坏,因为插入的是红节点,它的2个子女哨兵还是黑色,并不会影响黑高。唯一破坏的就是(性质2:根节点必须是黑色)和(性质4:如果一个节点是红,它的两个子女必须是黑)当破坏性质2时,把节点变为黑色。
第二步:调整
当性质4)破坏时,需要调整。性质4)破坏即插入节点的父节点也为红色,那么需要调整。
调整一共6种情况,但是其中三种和另外三种对称。下面讲述的是z的父节点是z的祖父节点的左节点(同理右节点)
三种情况的区别在于插入节点Z的父亲的兄弟(叔叔)的颜色不同。

1、叔叔颜色为红
2、叔叔颜色是黑,且Z是右孩子
3、叔叔是黑,且Z是左孩子。
1、叔叔是红。
z无论是左孩子还是右孩子,方法都一样。。Z变成newZ后按同样方法向上迭代。因为newZ的父亲可能是红。
这里写图片描述

2、叔叔是黑,且Z是左孩子
这里写图片描述
3、叔叔是黑,且Z是右孩子
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值