map底层为什么要用红黑树实现

红黑树的特点

红黑树是二叉查找树,但在每个节点增加一个存储为表示节点的颜色,可以是红色或黑色(非红即黑),通过对任意一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长两倍。因此,它是一种弱平衡二叉树,相对于严格的AVL树来说,它的旋转次数少,所以对于查找、插入、删除较多的情况下,通常使用红黑树。

红黑树与AVL比较:

1. AVL是严格平衡的,频繁的插入和删除,会引起频繁的rebalance,导致效率降低;红黑树是弱平衡的,算是一种折中,插入最多旋转2次,删除最多旋转3次。

所以红黑树在查找、插入删除的复杂度都是O(logn),且性能稳定,所以STL里面很多结构包括map底层都是使用的红黑树。

猜你喜欢

转载自www.cnblogs.com/lfri/p/12565031.html