漫画算法:5 分钟搞明白红黑树到底是什么?

  • 日期:08-23
  • 点击:(1545)


漫画算法:5分钟了解红黑树是什么?

f136977cdbbd40a1abeb00253bfda6f9.jpeg

作者|顽皮的A-Guang

编辑|涂敏

4c4b37a7917c4f20b57016124148054a.jpeg

7d286253a4d449c69866ba9ea9018cf2.jpeg

17a8b6349763464c9244c1a547ebc419.jpeg

615cec3564d340b497582ed9a71b6872.jpeg

04516fc9260c4f3ca64900aaa5c70b18.jpeg

以下是标准二进制排序树

03e33df436514011bdbd828b3497dd03.jpeg

05596713ce96408b92de789e49c23688.jpeg

初始状态

9256afb0ecf7422a97d0b231b3f228b9.jpeg

实际上,搜索值为226的节点非常简单。搜索动画过程如下:

718296c0cad0419db57a2a2dba9edbcf.gif

91d3a5dc21e04defa5418dac2c369010.jpeg

99931eebc5034a1f92e9d5d3f48e8840.jpeg

85567af0071d40af9789d8abf8ff859f.jpeg

00e6db2c96c048cca5f82f631eea17c6.jpeg

847ed567fa4145b09da257e2c845012e.jpeg

那不行!

这是一种疾病!

支配!

5b6505b21c974c8e9d8cc42c8cb9619c.jpeg

8a6d2089546c4ee59b92ac769515bca8.jpeg

c2ac44ff02a2404fb7910e273ff7ff67.jpeg

红黑树是平衡的二叉搜索树。说他平衡意味着他不会成为“蝎子”,他的左腿特别长或右腿特别长。除了二叉搜索树的特征外,还指定了以下特征:

1.节点为红色或黑色

2.根节点是黑色的

3.每个叶子的节点都是黑色空节点(NULL)

4.每个红色节点的两个子节点都是黑色的。

5.从任何节点到其每个叶子的所有路径都包含相同的黑色节点。

以下是标准的红黑树。阿光建议您参考下图

了解上面写的红黑树的性质

0aca2278e69048589a666d3f032263f0.jpeg

(可以忽略黑色NULL节点)

fddd03d1af344138bf77eb1e4fe3817c.jpeg

bde00079a966430ba4a31300bb28ac72.jpeg

例如,上面的标准红黑树,插入一个值为12的节点。

404c6f1ae31346d3b5f39a96cb51e370.jpeg

插入后,我发现我仍然符合红黑树的要求!

但是如果插入值为21的节点怎么办?

如下图所示:

14faa5ef6a744f9aa69f83891e50adf9.jpeg

06cc3394cc5f48cc9140c7e23439c23d.jpeg

e567bbff07424133bc66d75488c3057b.jpeg

让我们来看看颜色的变化吧!

为了符合红黑树的规则,红色节点将变为黑色或黑色变为红色。下图显示了红黑树的一部分。请注意,节点25不是根节点。因为21和22链接显示为红色,不符合规则4,所以将22变为红色:

5c80c1d7cece4601ab93dd4eb36faee8.jpeg

但是这仍然不符合规则5,所以你需要把25黑变成红色,见下图:

1e5d4db642134ad1bec9dcd7ce657add.jpeg

fb47ca2d6b874eb1ae0ec16eccd1afeb.jpeg

8b9835b51dbf43cbba6ed60862facea7.jpeg

10663674f4ac48e3896da0adb08ebf5d.jpeg

334e469d34274fd394c68d17ba52dffd.jpeg

df20d82c6ffe4d5da4e596db98e41c68.jpeg

8f9889a9ba8b4d588a2c3d6b77488b93.jpeg

让我们先讨论什么是左旋转!让我们以动画为例吧!

5af2ce08d2bb44b5b4f8053b75a8ebb6.gif

4e767bfa8a8441219d3c6b1fdfec07cb.gif

左旋转的示意图如下:

656f820de07b46e287b3e3def7154476.jpeg

我们来看看它,你可以看到下面的左旋转静态图

c9212f55d69b4836ba3f32e1d803ba7d.jpeg

根据左旋转,在上侧改变之后图像向左旋转。

d42b37e3902049959607fb50c2d71b8b.jpeg

cabba2645e864e2cb6446f6fa098c562.jpeg

d3448c426b6a4c9ab9dbb8377dc45f66.jpeg

f5ef35868ab045849c626740c18f8092.jpeg

f9f92f0091af41a5900d0d709f4e430e.jpeg

a761b00fd6f84ebb87e1a3a689408a7f.jpeg

3bf37bd64f0b4b5aa9e9fde53aae7146.gif

7661a438e77d4fc1a4e9fe8e8c980a84.gif

看到正确轮换的想法总结如下:

e24ddc2ee88540f4864e7e9a0bfc3416.jpeg

我们来看看它,你可以看到下面的静态旋转图。

1c6a3a51b2f54881afa711950752939e.jpeg

接下来,在左旋转后旋转顶部的图像。

c2557b1cbf524bd6982b9f64cb6c277b.jpeg

03c10602a09f4387ac449ae79fa1bba1.jpeg

6f17736e360e4023ba1bd44eab75db74.jpeg

24e7bf25113e4ce7bb76f62c732b4b63.jpeg

bb2af68e9b73431e8c7c5994a0876a53.jpeg

e1847feac697418ba670819022c3ee5a.jpeg

7246e765ea5f40bc88d6dc4b1abbe779.jpeg

3ecd177da0e7440383a5fd0c286b1c87.jpeg

324895bef4ef45e2ae244b86c5f870fd.jpeg

生活,就像一棵黑树,总是需要一些平衡

一方给出,另一方接受

一方是支付,另一方是

一方是农业,另一方是收获

一方是材料,另一方是精神

阿光,你已经二十多岁了,没有站着

在光明而多彩的世俗社会中

我希望Aguang能记住它

一个古老但多彩的方式!

“生活很容易自由”

因为它愿意,所以无动于衷。

由于简单,很难成为仆人。

所以要保持精神和内在的财富

17: 30

来源: CSDN

漫画算法:5分钟了解红黑树是什么?

f136977cdbbd40a1abeb00253bfda6f9.jpeg

作者|顽皮的A-Guang

编辑|涂敏

4c4b37a7917c4f20b57016124148054a.jpeg

7d286253a4d449c69866ba9ea9018cf2.jpeg

17a8b6349763464c9244c1a547ebc419.jpeg

615cec3564d340b497582ed9a71b6872.jpeg

04516fc9260c4f3ca64900aaa5c70b18.jpeg

以下是标准二进制排序树

03e33df436514011bdbd828b3497dd03.jpeg

05596713ce96408b92de789e49c23688.jpeg

初始状态

9256afb0ecf7422a97d0b231b3f228b9.jpeg

实际上,搜索值为226的节点非常简单。搜索动画过程如下:

718296c0cad0419db57a2a2dba9edbcf.gif

91d3a5dc21e04defa5418dac2c369010.jpeg

99931eebc5034a1f92e9d5d3f48e8840.jpeg

85567af0071d40af9789d8abf8ff859f.jpeg

00e6db2c96c048cca5f82f631eea17c6.jpeg

847ed567fa4145b09da257e2c845012e.jpeg

那不行!

这是一种疾病!

支配!

5b6505b21c974c8e9d8cc42c8cb9619c.jpeg

8a6d2089546c4ee59b92ac769515bca8.jpeg

c2ac44ff02a2404fb7910e273ff7ff67.jpeg

红黑树是平衡的二叉搜索树。说他平衡意味着他不会成为“蝎子”,他的左腿特别长或右腿特别长。除了二叉搜索树的特征外,还指定了以下特征:

1.节点为红色或黑色

2.根节点是黑色的

3.每个叶子的节点都是黑色空节点(NULL)

4.每个红色节点的两个子节点都是黑色的。

5.从任何节点到其每个叶子的所有路径都包含相同的黑色节点。

以下是标准的红黑树。阿光建议您参考下图

了解上面写的红黑树的性质

0aca2278e69048589a666d3f032263f0.jpeg

(可以忽略黑色NULL节点)

fddd03d1af344138bf77eb1e4fe3817c.jpeg

bde00079a966430ba4a31300bb28ac72.jpeg

例如,上面的标准红黑树,插入一个值为12的节点。

404c6f1ae31346d3b5f39a96cb51e370.jpeg

插入后,我发现我仍然符合红黑树的要求!

但是如果插入值为21的节点怎么办?

如下图所示:

14faa5ef6a744f9aa69f83891e50adf9.jpeg

06cc3394cc5f48cc9140c7e23439c23d.jpeg

e567bbff07424133bc66d75488c3057b.jpeg

让我们来看看颜色的变化吧!

为了符合红黑树的规则,红色节点将变为黑色或黑色变为红色。下图显示了红黑树的一部分。请注意,节点25不是根节点。因为21和22链接显示为红色,不符合规则4,所以将22变为红色:

5c80c1d7cece4601ab93dd4eb36faee8.jpeg

但是这仍然不符合规则5,所以你需要把25黑变成红色,见下图:

1e5d4db642134ad1bec9dcd7ce657add.jpeg

fb47ca2d6b874eb1ae0ec16eccd1afeb.jpeg

8b9835b51dbf43cbba6ed60862facea7.jpeg

10663674f4ac48e3896da0adb08ebf5d.jpeg

334e469d34274fd394c68d17ba52dffd.jpeg

df20d82c6ffe4d5da4e596db98e41c68.jpeg

8f9889a9ba8b4d588a2c3d6b77488b93.jpeg

让我们先讨论什么是左旋转!让我们以动画为例吧!

5af2ce08d2bb44b5b4f8053b75a8ebb6.gif

4e767bfa8a8441219d3c6b1fdfec07cb.gif

左旋转的示意图如下:

656f820de07b46e287b3e3def7154476.jpeg

我们来看看它,你可以看到下面的左旋转静态图

c9212f55d69b4836ba3f32e1d803ba7d.jpeg

根据左旋转,在上侧改变之后图像向左旋转。

d42b37e3902049959607fb50c2d71b8b.jpeg

cabba2645e864e2cb6446f6fa098c562.jpeg

d3448c426b6a4c9ab9dbb8377dc45f66.jpeg

f5ef35868ab045849c626740c18f8092.jpeg

f9f92f0091af41a5900d0d709f4e430e.jpeg

a761b00fd6f84ebb87e1a3a689408a7f.jpeg

3bf37bd64f0b4b5aa9e9fde53aae7146.gif

7661a438e77d4fc1a4e9fe8e8c980a84.gif

看到正确轮换的想法总结如下:

e24ddc2ee88540f4864e7e9a0bfc3416.jpeg

我们来看看它,你可以看到下面的静态旋转图。

1c6a3a51b2f54881afa711950752939e.jpeg

接下来,在左旋转后旋转顶部的图像。

c2557b1cbf524bd6982b9f64cb6c277b.jpeg

03c10602a09f4387ac449ae79fa1bba1.jpeg

6f17736e360e4023ba1bd44eab75db74.jpeg

24e7bf25113e4ce7bb76f62c732b4b63.jpeg

bb2af68e9b73431e8c7c5994a0876a53.jpeg

e1847feac697418ba670819022c3ee5a.jpeg

7246e765ea5f40bc88d6dc4b1abbe779.jpeg

3ecd177da0e7440383a5fd0c286b1c87.jpeg

324895bef4ef45e2ae244b86c5f870fd.jpeg

生活,就像一棵黑树,总是需要一些平衡

一方给出,另一方接受

一方是支付,另一方是

一方是农业,另一方是收获

一方是材料,另一方是精神

阿光,你已经二十多岁了,没有站着

在光明而多彩的世俗社会中

我希望Aguang能记住它

一个古老但多彩的方式!

“生活很容易自由”

因为它愿意,所以无动于衷。

由于简单,很难成为仆人。

所以要保持精神和内在的财富

仅提供信息存储空间服务。

红黑树

节点

阿光

根节点

阅读()