红黑树:
本质是一棵近似平衡的搜索树,当然,想要了解红黑树的前提是你足够了解搜索树和AVL(高度平衡的二叉搜索树);
红黑树的特征:
(注意,本文所讲内容时刻围绕这五条特征,请仔细阅读)
1. 每个节点,不是红色就是黑色的
2. 根节点是黑色的
3. 如果一个节点是红色的,则它的两个子节点是黑色的
4. 对每个节点,从该节点到其所有后代叶节点的简单路径上,均包含相同数目的黑色节点。
5. 空节点都是黑色的
下面是一颗典型的红黑树特例,结合红黑书的特点看图:
接下来的内容就围绕红黑树的插入结点展开;
注意:时刻保持红黑树的特征;
红黑树结点的结构组成:
enum Color
{
RED,
BLACK
};
template<class K,class V>
struct RBNode
{
RBNode<K,V>* _left;
RBNode<K,V>* _right;
RBNode<K,V>* _parent;
K _key;//关键码,在树中具有惟一性;
V _value;//携带的值,可有可无;
Color _color;//颜色
RBNode(){}
RBNode(const K& key,const</