红黑树

一句话概括:着色了的二叉查找树。
二叉树若退化成了一棵具有n个结点的线性链后,则此些操作最坏情况运行时间为O(n)。红黑树通过着色等一些性质使得树相对平衡,使得最终查找、插入、删除的时间复杂度最坏情况下依然为O(lgn)。是一种不太完美的平衡二叉树

应用场景:STL中的set(unordered_set是hash)、map。

满足的条件:
1.节点是红色或黑色;
2.根节点是黑色;
3.每个叶节点(NIL节点,空节点)是黑色的;
4.每个红色节点的两个子节点都是黑色;(从每个叶子到根的所有路径上不能有两个连续的红色节点)
5.从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。


查找、插入、删除:
红黑树的删除操作类似于B-树的删除,需要注意保持它的红黑平衡性。红黑的搜索那就和B-树的查找一模一样了,其实任何排序树的操作都是一样的。

插入、删除都十分复杂,最好见:红黑树


保持平衡的重要操作:旋转
平衡二叉树要保持他的平衡性,旋转是一项必不可少的工作。同样,红黑树是一颗准平衡二叉树,旋转也是一项重要工作。
旋转基本都一样,左旋和右旋互为镜像,左右旋啥的就是组合旋,只要记住一幅图即可:

推荐阅读更多精彩内容

  • 1、红黑树介绍 红黑树又称R-B Tree,全称是Red-Black Tree,它是一种特殊的二叉查找树,红黑树的...
    文哥的学习日记阅读 7,776评论 1 34
  • 红黑树是平衡二叉查找树的一种。为了深入理解红黑树,我们需要从二叉查找树开始讲起。 BST 二叉查找树(Binary...
    kanehe阅读 951评论 0 8
  • 上一篇:Java集合-ConcurrentHashMap工作原理和实现JDK8 本文学习知识点 1、二叉查找树,以...
    Misout阅读 11,970评论 8 64
  • 大一以来看了十几二十几本书,其中,记忆深刻的便是平凡的世界,这本书没有枯燥无味,平常没有阅读习惯的我把它看完整了,...
    凉瓷v阅读 96评论 1 3