当前位置:首页  >  关于学院  >  技术干货  >  云计算技术干货  >  正文

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

来源:千锋教育
发布时间:2023-10-11 21:02:50
分享

一、为什么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树适合用于插入与删除次数比较少,但查找多的情况。:

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

相关推荐

  • Python 在 Linux 里面有哪些应用? 一、Python 在 Linux 里面有哪些应用Python 在 Linux 里面的应用主要是运维。python在系统管理上的优势在与强大的开发能力和完整的工具链。python的工程开发能力强大,远强
  • 为什么STL和linux都使用红黑树作为平衡树的实? 一、为什么STL和linux都使用红黑树作为平衡树的实现选择红黑树作为底层实现红黑树是一种类平衡树, 但它不是高度的平衡树, 但平衡的效果已经很好了。STL map , nginx,linux 虚拟内
  • Linux内核链表有什么好处? 一、Linux内核链表的好处1、高效的插入和删除操作Linux 内核链表的设计经过了精心优化,使得插入和删除操作非常高效。通过使用指针的指针来引用链表节点,可以避免不必要的指针复制和内存拷贝,从而提高
  • Linux系统函数read()/write()/pread()/pwrite()有什么区别? 一、Linux系统函数read()/write()/pread()/pwrite()的区别read() 和 write():这两个函数分别用于从文件中读取数据和向文件写入数据。它们基于文件的当前位置进
  • Linux系统有什么好处? 一、Linux系统的好处1、免费和开源Linux系统是免费和开源的,任何人都可以下载、使用、修改和分享源代码。这使得Linux系统成为开发人员、研究人员、学生和个人用户的优选操作系统。2、高度安全性L
  • 什么是linux进程? 一、什么是linux进程Linux进程是指在Linux操作系统上运行的程序实例。进程是操作系统中最基本的资源之一,每个进程都具有自己的代码、数据、内存空间和状态等属性。Linux进程的创建和管理是由操