算法导论-第13章

    红黑树

1.它是一种变形的avl平衡树

2.它的性能很好,在最坏情况下为O(lgn),只和树高有关系。

3.记住它的那5条性质,是很有帮助的。

第一个概念---旋转:

这个是理解调整红黑树的基础,我就具体说一下我的理解:

1.首先你找到要旋转的y的位置

2.令x的右孩子指向y的左孩子

3.y的左孩子找到x为他们的父亲

4.用y代替以前x的位置,以前是左孩子现在y就是左孩子,右孩子就是右孩子

5.y的左孩子找到了x

6.x的父亲就是y


第二个概念——插入

1.插入和以前的二叉树一样,只是加了一种颜色

2.这个颜色为红色,因为黑色违法性质5

3.最后调整这个红色的节点,满足红黑树性质。

插入就不想写了,如何调整???

3种情况!!!!!!!!!!!!!!

1.有一个点我们认为叫z,它的叔叔是红色

那么爸爸和叔叔,和爷爷换颜色,而自己现在变到了爷爷的位置,记住啊,叔叔红色

2.这个时候叔叔是黑色,而且自己是右孩子

不要怕,左旋转一下就变成情况3

3.这个就是叔叔黑色,二自己是左孩子

现在自己和爸爸都是红色,而爷爷是黑色,明显的,让爸爸旋转上去,爸爸和爷爷换颜色就好了


第三个概念——删除

删除和前面的二叉树一样,假如删除的是红色的点,没关系,假如是黑色的,需要调整

如何调整?

4种情况!!!!!!!!!!!!!1

1.有一个点我们叫它为x,而它的兄弟是红色的

那你就叫他们的爸爸和它的兄弟,旋转+换颜色。

2.它的兄弟是黑色+兄弟有2个孩子都是黑色

你让你兄弟换成红色就好

3.兄弟黑色+兄弟左孩子红+右孩子黑

叫你兄弟和它的左孩子,旋转+换色

4.兄弟黑色+兄弟右孩子红色

让你兄弟和你爸爸和它的右孩子,旋转+换色


好了,我想说具体的实现是相当的麻烦,你不写个十遍八遍的,你都不知道在弄什么,但你认真看我写的,你一定弄清楚了,这个过程在干什么

别的不说,起码你会调整了。

最后记住,插入是和叔叔结点有关,二删除是和你兄弟有关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值