【恋上数据结构与算法 第一季】红黑树 Red BlackTree


持续学习&持续更新中…

学习态度:守破离


红黑树 Red BlackTree

学习红黑树之前应该先学习B树

基本概念

在这里插入图片描述

  • 红黑树里面所说的叶子节点跟我们以前讲的叶子节点不一样,红黑树中所讲的叶子节点是:让原来度为0或者度为1的节点都变为度为2的节点(用空节点补齐),这些增加的空节点(null节点)就是红黑树中所讲的叶子节点。这些叶子节点(假想出来的null节点)都是BLACK

在这里插入图片描述

  • 注意第三条性质:红黑树会让原来那些度为0(例如17、33…)、度为1(例如46、74…)的节点都变成度为2的节点。那么怎么变呢?很简单,给它新增null的子节点即可。红黑树所说的叶子节点是指那些null节点,我们也可以将这些null节点称为外部节点,并且这些null节点(外部节点)是我们为了理解红黑树的一些性质而假想出来的,我们平时写代码的时候不用将这些节点加进去。给红黑树的每个度为0和度为1的节点加上null的子节点后,这颗红黑树就成为了一颗真二叉树。观察上图不难得知:红黑树中度为0的节点都是那些假想出来的null节点,原来的那些不为空的那些节点的度都为2。

真二叉树:度要么为0要么为2

  • 注意第四条性质:我们可以得出红色节点的父节点和子节点都必然是黑色节点

总结:

  1. 节点要么为RED要么为BLACK
  2. 根节点和叶子节点都为BLACK
  3. RED节点的父子节点都为BLACK
  4. 从任一节点到叶子节点的所有路径都包含数目相同的BLACK节点

参考

小码哥李明杰老师课程: 恋上数据结构与算法 第一季.


本文完,感谢您的关注支持!


Guess you like

Origin blog.csdn.net/weixin_44018671/article/details/120616672