千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:沈阳千锋IT培训  >  技术干货  >  为什么STL和linux都使用红黑树作为平衡树的实?

为什么STL和linux都使用红黑树作为平衡树的实?

来源:千锋教育
发布人:xqq
时间: 2023-10-15 01:07:33

一、为什么STL和linux都使用红黑树作为平衡树的实现

选择红黑树作为底层实现红黑树是一种类平衡树, 但它不是高度的平衡树, 但平衡的效果已经很好了。STL map , nginx,linux 虚拟内存管理,他们都有红黑树的应用。

1. 如果插入一个node引起了树的不平衡,AVL和RB-Tree都是非常多只需要2次旋转操作,即两者都是O(1);但是在删除node引起树的不平衡时,最坏情况下,AVL需要维护从被删node到root这条路径上所有node的平衡性,因此需要旋转的量级O(logN),而RB-Tree非常多只需3次旋转,只需要O(1)的复杂度。

2. 其次,AVL的结构相较RB-Tree来说更为平衡,在插入和删除node更容易引起Tree的unbalance,因此在大量数据需要插入或者删除时,AVL需要rebalance的频率会更高。因此,RB-Tree在需要大量插入和删除node的场景下,效率更高。自然,由于AVL高度平衡,因此AVL的search效率更高。

3. map的实现只是折衷了两者在search、insert以及delete下的效率。总体来说,RB-tree的统计性能是高于AVL的。

延伸阅读

二、AVL树(平衡二叉树)

AVL树是带有平衡条件的二叉查找树,一般是用平衡因子差值判断是否平衡并通过旋转来实现平衡,左右子树的高度差不超过1,和红黑树相比,AVL树是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差的绝对值不超过1。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而旋转是非常耗时的,由此我们可以知道AVL树适合用于插入与删除次数比较少,但查找多的情况。:

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

Python中动态编译函数compile参数filename的作用是什么?

2023-10-15

为什么使用红黑树以及如何使用红黑树?

2023-10-15

HBase、TiDB、TDengine有什么优势?

2023-10-15

最新文章NEW

网站间隙性502怎么解决?

2023-10-15

Mysql为什么只能支持2000w左右的数据量?

2023-10-15

AliSQL和OceanBase是什么关系?

2023-10-15

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>