map和set的底层结构——红黑树

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值