数据结构 —— 红黑树:图解插入示例

0、 阅读前提

阅读本文的前提是必须懂得红黑树的原理,不懂的可先阅读这一篇:红黑树:定义、性质、节点插入操作

1、说明

将下列数

12、1、9、2、0、11、7、19、4、15、18、5、14、13、10、16、6、3、8、17

20个数,插入到红黑树中。

2、插入过程

(1)插入12
在这里插入图片描述

说明:插入的节点若是根节点,则直接将其设置为黑色

(2)插入1

在这里插入图片描述

说明:插入的节点若不是根节点,则将其设置为红色

(3)插入9

在这里插入图片描述

操作:

  • 父点1 左旋
  • 祖父节点12 右旋
  • 交换节点9 和12 颜色。

(4)插入2
在这里插入图片描述

操作:

  • 交换节点1、12、9 交换颜色;
  • 因为9为根结点,故将9 设为黑色。

(5)插入0
在这里插入图片描述
父节点为黑色,故不做任何变化。

(6)插入11
在这里插入图片描述
父节点为黑色,故不做任何变化。

(7)插入7
在这里插入图片描述
操作:

  • 节点0、2 设为黑色,节点1、7 设为红色;

(8)插入19
在这里插入图片描述

父节点为黑色,故不做任何变化。

(9)插入4

在这里插入图片描述

操作:

  • 节点7 右旋
  • 节点2 左旋
  • 节点2、4、7 交换颜色

(10)插入15
在这里插入图片描述
操作:

  • 节点11、19设为黑色,节点12设为红色。(父叔同红,红加黑)

(11)插入18

在这里插入图片描述

操作:

  • 节点15 左旋
  • 节点19 右旋
  • 节点18 设为黑色、15、19设为红色 (父叔同红,黑加红)

(12)插入5

在这里插入图片描述

操作:

  • 节点2、7设为黑色,节点5、4设为红色。(红加黑)
  • 将节点4 的父节点1、12设为黑色,祖节点9设为 红色(红加黑)
  • 因为9 为根节点,故将9设为红色。

(13)插入14

在这里插入图片描述

操作:

  • 节点15、19设为黑色,节点18设为红色。(父叔同红,红加黑)

(14)插入13

在这里插入图片描述

操作:

  • 节点15 右旋;
  • 节点14 设为黑色,节点15 设为红色。(黑加红)

(15)插入10

在这里插入图片描述

父节点为黑色,故不做任何变化。

(16)插入16

在这里插入图片描述

操作1:

  • 节点13、15 设为黑色,节点14 设为红色;(父叔同红,红加黑)

操作2:

节点14 为当前节点,14、18同为红色,故需要左右旋。操作如下:

  • 节点18 右旋
  • 节点12 左旋
  • 交换12、14的颜色 (黑加红)

(17)插入6

在这里插入图片描述

操作:

  • 节点5 左旋
  • 节点7 右旋
  • 6、7 交换颜色(黑加红)

(18)插入3

在这里插入图片描述

父节点为黑色,故不做任何变化。

(19)插入8

在这里插入图片描述

操作1:

  • 节点距5、7设为红色、6 设为黑色;

操作2:
节点6 为当前节点。

  • 祖父节点1 左旋

(20)插入17
在这里插入图片描述

操作1:

  • 节点17的祖父节点15左旋
  • 交换15、16的颜色

3、最终结果

插入完毕,最后的结果是
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值