目录 介绍 概念 性质 插入 右旋 ++ -- 代码 介绍 红黑树是一种自平衡的二叉搜索树 它是在每个节点上引入额外的颜色信息,通过对任何一条从根到叶子的路径上各个结点着色方式的限制,确保没有一条路径会比其他路径长出俩倍,从而达到高度差的平衡 保证了在最坏情况下的时间复杂度为O(log n) 同时,它也是c++标准库中两种关联容器(set和map)的底层实现 结点颜色只有红色,黑色两种 根结点必须是黑色 每个叶子结点(也就是平常被我们忽略的空结点(NIL结点))都是黑色的 不能有两个连续的红色节点(从上到下的路径来看) 从任意一个节点到其每个叶子节点的路径必须包含相同数目的黑色节点,这被称为黑色高度(Black Height) 满足以上性质后,可以保证红黑树中,其最长路径中节点个数不会超过最短路径节点个数的两倍 模拟实现 和avl树一样,需要频繁用到父结点,所以需要一个parent成员 除此之外,他还需要存储每个结点的颜色信息 库中定义: stl库中,红黑树实际上还有一个哨兵位的头结点(当然没有也可以) 可以看到,树中定义了一个成员变量header...