您的位置:首页 > 其它

二叉搜索树—RBTree(红黑树)

2016-08-09 21:44 218 查看
       红黑树又称二叉搜索树,它主要是通过红和黑两种颜色(red、black)来标识节点。通过对任何一条从根节点到叶子节点路径上的节点颜色进行约束,红黑树保证最长路径不超过最短路径的两倍,所以说:红黑树是近似于平衡的。

■下面是红黑树的主要特点:
        (1)红黑树的根节点是黑色的。
        (2)红黑树中若一个节点是红色的,则它的两个子节点必须是黑色的。
        (3)红黑树中从该节点到后代叶节点的路径上,黑色节点数目是相同的。


       ◆红黑树的应用:
                 C++库、linux内核、java库等

       ◆红黑树与AVL树的区别:
                  红黑树和AVL树都是高效的平衡搜索树,时间复杂度都是O(lgN);
                  红黑树对平衡的要求不是特别高,它只需要满足最长路径不超过最短路径的两倍,所以性能相对较高。

■下面是红黑树中节点结构:
[code=cpp;toolbar:false">enum color      //枚举节点的两种颜色
{
     RED,
     BLACK,
};

template <class K, class V>
struct RBTreeNode
{
     color _col;
     RBTreeNode<K, V>* _left;
     RBTreeNode<K, V>* _right;
     RBTreeNode<K, V>* _parent;
     K _key;
     V _value;
     
     RBTreeNode(const K& key, const V& value)
          :_key(key)
          , _value(value)
          , _left(NULL)
          , _right(NULL)
          , _parent(NULL)
          , _col(RED)          //颜色必须插入的是红色,因为要保证黑色节点的个数是平衡的
     { }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: