map底层

map是C++STL中的一种关联容器,也就是存key-value键值对的映射表容器,有map和multimap,它们之间的区别是map不允许key重复,multimap是允许key重复的;map的底层是一颗红黑树,一种非严格的平衡二叉树,左右子树的高度差不能超过较短子树高度的2倍,数据的增删查效率都比较高,平均时间复杂度在O(log2n)。在此给出红黑树的定义:

1)每个结点要么是红的,要么是黑的。

2)根结点是黑的。

3)每个叶结点,即空结点(NIL)是黑的。

4)如果一个结点是红的,那么它的俩个儿子都是黑的。

5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。

红黑树不像AVL(平衡二叉树)树那样维持了二叉树的高度平衡(左右子树的高度差不能超过1),因此在插入删除数据时,所做的旋转操作比起红黑树来说,那就少很多了,因此其效率也比AVL树高;红黑树插入一个新节点,旋转的次数最多2次,删除一个节点旋转的次数最多3次。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值