两兄弟房子怎么分左右,两兄弟分房子有左右吗

首页 > 家居 > 作者:YD1662023-04-15 18:38:25

如上图,插入52和60的位置分别是RR情况和LL情况。

RR情况:父节点为祖父节点的右节点,插入节点为父节点的右节点

LL情况:父节点为祖父节点的左节点,插入节点为父节点的左节点

这两种情况很明显,插入节点为红色,父节点也为红色,父节点的子节点为红色显然违背了红黑树的性质四,我们需要对这种情况进行修复,使其重新满足红黑树性质。

判定条件:uncle 不是红色节点。

这里的两种情况,他们的插入节点都是没有叔父节点的,所以叔父节点也不可能是红色。

案例修复:

我们在红黑树等价转换那一章节也讲过了,红黑树等价转换成B树之后,B树节点的中间节点(父节点)都是黑色,两边的节点(子节点)都是红色。但是上面两种情况插入后,插入位置的B树节点并不满足这个条件,所以我们对其进行修复,使其满足B树节点的条件之后,也就重新恢复了红黑树性质。

B树节点中的中间节点大小介于两个子节点之间。以上图RR情况为例,插入节点52的原父节点应该放在B树节点中间的位置,应当将其染成黑色。插入节点52的原祖父节点46,应当将其转换为插入节点原父节点的子节点,所以将其染成红色。LL情况同理

完成染色之后,需要对原祖父节点进行单旋操作,来进行父节点,子节点的重新分配。以上图为例:

修复之后的结果如下图:

两兄弟房子怎么分左右,两兄弟分房子有左右吗(13)

修复步骤总结:

  1. parent 染成黑色,grand 染成红色
  2. grand 进行单旋操作
6.2.3 LR和RL插入情况

两兄弟房子怎么分左右,两兄弟分房子有左右吗(14)

如上图,插入48和74的位置分别是RL情况和LR情况。

RL情况:父节点为祖父节点的右节点,插入节点为父节点的左节点

LR情况:父节点为祖父节点的左节点,插入节点为父节点的右节点

这两种情况和上面的两种情况一样,插入节点为红色,父节点也为红色,父节点的子节点为红色显然违背了红黑树的性质四,我们需要对这种情况进行修复,使其重新满足红黑树性质。

判定条件:uncle 不是红色节点。

这两种情况的插入节点也是没有叔父节点的。

案例修复

B树节点中的中间节点大小介于两个子节点之间。以上图RL情况为例,插入节点48大小介于原父节点和原祖父节点之间,它应该是B树节点中的中间节点,所以将插入节点48染成黑色,将原祖父节点46染成红色来作为插入节点的子节点。LR情况同理

完成染色之后,需要进行双旋操作,来进行父节点,子节点的重新分配。以上图为例:

修复之后的结果如下图:

两兄弟房子怎么分左右,两兄弟分房子有左右吗(15)

修复步骤总结:

  1. 插入节点染成黑色,grand 染成红色
  2. 进行双旋操作
6.2.4 上溢的LL插入情况

两兄弟房子怎么分左右,两兄弟分房子有左右吗(16)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.