了解红黑树

引言

既然我们要说红黑树,我们就要了解红黑树是一种完美自平衡的二叉查找树,

二叉查找树

接下来说一下二叉查找树的特点: 有点像二分查找

  1. 右子树的值大于根节点的值
  2. 左节点的值小于根节点的值
  3. 左右子树也一定是二叉排序树

红黑树

接下来说一下红黑树的特点:

  1. 根节点必须是黑色的
  2. 每个节点都有颜色,要么是红色,要么是黑色的
  3. 每个叶子的节点都是黑色的空节点(NULL)
  4. 每个红色节点的两个子节点都是黑色的,如果有红色就要变形,自旋等操作
  5. 从任意节点到其每个叶子的所有路径都包含相同的黑色节点。

为什么需要需要红黑树的结构,为什么说他是完美平衡,二叉查找树与之有何不一样,
二叉查找树都是从根节点然后往两边找,但是如果一个树他是左撇子或者右撇子,那时间复杂度将会达到最高
所以红黑树完美平衡在,他5个性质保证了左右子树黑色节点的路劲一致,查找并不会出现左右撇子。

下面看一个漫画加深理解一下红黑树的
https://baijiahao.baidu.com/s?id=1641940303518144126&wfr=spider&for=pc

插入四种情况

插入默认都是插入红色节点,因为插入黑色节点必定会影响性质5,从而改变整个树的结构

  1. 整个树是空的,那么插入就要变红色为黑色
  2. 父结点为黑色,那么即正常插入的情况
  3. 父结点,祖父节点和插入的位置成了三点一线,三角关系,就要发生自旋
  4. 插入的时候,父结点与伯父节点(父结点的兄弟)都是红色,那么就要让父结点伯父节点还有祖父节点变色,如果因此变色改变了树的结构那么就要重新按照1,2,3,4步骤再次变形
发布了105 篇原创文章 · 获赞 19 · 访问量 4967

猜你喜欢

转载自blog.csdn.net/jiohfgj/article/details/104727947