1.红黑树的概念
红黑树是一种二叉搜索树,在每个节点上加一个储存位表示颜色的概念,只有红黑两种颜色,通过对节点颜色的限制,使得红黑树的最长路径不超过最短路径的二倍,因此是接近平衡的。
2.红黑树的性质
1.每个节点只有红和黑两种颜色
2.根节点是黑色的
3.如果一个节点是红色的,则他的两个孩子节点是黑色的
4.对于每个节点,从该节点到其所有后代节点的简单路径上,均包含相同数目的黑色节点
5.每个叶子节点都是黑色的(此处的叶子节点指的是空节点)
3.红黑树节点的定义
enum Colour
{
RED,
BLACK
};
template<class K,class V>
struct RBTreeNode
{
RBTreeNode<K, V>* _left;
RBTreeNode<K, V>* _right;
RBTreeNode<K, V>* _parent;
pair<K, V> _kv;
Colour _col;
RBTreeNode(const pair<K, V>& kv)
:_left(nullptr)
, _right(nu