红黑树 是不是平衡二叉树?

作者&投稿:子友 (若有异议请与网页底部的电邮联系)
红黑树和平衡二叉树 区别~

红黑树和平衡二叉树的主要区别如下:
平衡二叉树(AVL)树是严格的平衡二叉树,平衡条件必须满足(所有节点的左右子树高度差不超过1)。不管我们是执行插入还是删除操作,只要不满足上面的条件,就要通过旋转来保持平衡,而的英文旋转非常耗时的。所以平衡二叉树(AVL)适合用于插入与删除次数比较少,但查找多的情况。
红黑树在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为O(log
n)。所以红黑树适用于搜索,插入,删除操作较多的情况。
扩展资料:
平衡二叉树在Windows
NT内核中广泛存在。
红黑树的应用:
1、在C
++的STL中,地图和集都是用红黑树实现的;
2、著名的Linux的的进程调度完全公平调度程序,用红黑树管理进程控制块,进程的虚拟内存区域都存储在一颗红黑树上,每个虚拟地址区域都对应红黑树的一个节点,左指针指向相邻的地址虚拟存储区域,右指针指向相邻的高地址虚拟地址空间;
3、IO多路复用的epoll的的的实现采用红黑树组织管理的sockfd,以支持快速的增删改查;
4、Nginx的的的中用红黑树管理定时器,因为红黑树是有序的,可以很快的得到距离当前最小的定时器;
5、Java中的TreeMap中的实现。
参考资料:
百度百科-平衡二叉树
百度百科-红黑树

红黑树和之前所讲的avl树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。自从红黑树出来后,avl树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能。
红黑树和avl树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是avl树中的非常严格的平衡。avl树的复杂比起红黑树来说简直是小巫见大巫。红黑树是真正的变态级数据结构。

红黑树属于平衡二叉树。
说它不严格是因为它不是严格控制左、右子树高度或节点数之差小于等于1。
但红黑树高度依然是平均log(n),且最坏情况高度不会超过2log(n),这有数学证明。所以它算平衡树,只是不严格。不过严格与否并不影响数据结构的复杂度。
红黑树多用于系统底层,oi竞赛中基本不用。

平衡二叉树是要求左右子树高度相差小于等于1,而红黑树是要求左右子树高度相差小于等于二倍,也就是说从根结点到叶结点的最长路径不大于最短路径的2倍。

红黑树是一种自平衡二叉查找树...典型的平衡二叉树


铁力市17080422258: 红黑树和平衡二叉树 区别 -
豆郊科林: 红黑树和之前所讲的AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能.自从红黑树出来后,AVL树就被放到了博物馆里,据说是红黑树有更好的效率,更高的统计性能. 红黑树和AVL树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是AVL树中的非常严格的平衡.AVL树的复杂比起红黑树来说简直是小巫见大巫.红黑树是真正的变态级数据结构.

铁力市17080422258: 为什么选择红黑树作为底层实现 -
豆郊科林: 红黑树属于平衡二叉树. 说它不严格是因为它不是严格控制左、右子树高度或节点数之差小于等于1. 但红黑树高度依然是平均log(n),且最坏情况高度不会超过2log(n),这有数学证明.所以它算平衡树,只是不严格.不过严格与否并不影响数据结构的复杂度. 红黑树多用于系统底层,oi竞赛中基本不用.

铁力市17080422258: 为什么工程中都用红黑树,而不是其他平衡二叉树 -
豆郊科林: 红黑树和平衡二叉树区别如下:1、红黑树放弃了追求完全平衡,追求大致平衡,在与平衡二叉树的时间复杂度相差不大的情况下,保证每次插入最多只需要三次旋转就能达到平衡,实现起来也更为简单.2、平衡二叉树追求绝对平衡,条件比较...

铁力市17080422258: 红黑树在linux内核什么地方 -
豆郊科林: 红黑树是平衡二叉树的一种,它有很好的性质,树中的结点都是有序的,而且因为它本身就是平衡的,所以查找也不会出现非常恶劣的情况,基于二叉树的操作的时间复杂度是O(log(N)).Linux内核在管理vm_area_struct时就是采用了红黑树来维...

铁力市17080422258: 红黑树与普通的平衡二叉树除了颜色到底有什么区别 -
豆郊科林: 首先平衡二叉树是特殊的二叉排序树,他的结点元素间存在着偏序关系.其次相对于一般

铁力市17080422258: 什么是平衡二叉树 -
豆郊科林: 这要涉及到满二叉树与完全二叉树的问题 满二叉树是将一个n层二叉树完全排满的二叉树,第n层有2^n个元素; n层完全二叉树是将n层满二叉树最后一层从后向前依次去处少于2^n个元素; 完全二叉树是平衡二叉树的一个特例,平衡二叉树是将完全二叉树的最后一层元素任意排在空位上的一种二叉树. 如下图所示,左为满二叉树,右为完全二叉树:

铁力市17080422258: 红黑树的用途 -
豆郊科林: 红黑树用在关联数组、字典的实现上.需要的空间比散列表小. 任何键值对应,需要随机存储和键有序的情况都可以用.一. 基本概念 1.红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用...

铁力市17080422258: 红黑树的简介 -
豆郊科林: 红黑树是一种很有意思的平衡检索树.它的统计性能要好于平衡二叉树(有些书籍根 红黑树 据作者姓名,Adelson-Velskii和Landis,将其称为AVL-树),因此,红黑树在很多地方都有应用.在C++ STL中,很多部分(目前包括set, multiset, map...

铁力市17080422258: 平衡二叉树为什么叫AVL? -
豆郊科林: 平衡二叉树(Balanced Binary Tree) 是二叉搜索树(又名二叉查找树排序二叉树)的一种.在二叉搜索树中,搜索、插入、删除的复杂度都和书的高度相关,因此树高是制约二叉搜索树时间效率的最大瓶颈.理论上,任意高度为h二叉树最多...

铁力市17080422258: 什么是红黑树 -
豆郊科林: 红黑树是特殊的AVL树,遵循红定理和黑定理 红定理:不能有两个相连的红节点 黑定理:根节点必须是黑节点,而且所有节点通向NULL的路径上,所经过的黑节点的个数必须相等

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网