问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

红黑树比起AVL树具体更高效在什么地方呢?

发布网友 发布时间:2022-04-28 23:08

我来回答

3个回答

热心网友 时间:2022-06-24 23:36

优化了我的avl实现,AVL插入和删除并不像教科书上说的,需要回溯到根节点,两种情况下可以直接退出向上回溯:

插入更新时:如果当前节点的高度没有改变,则停止向上回溯父节点。

删除更新时:如果当前节点的高度没有改变,且平衡值在[-1,1]区间则停止回溯。

最终结论,优化过的avl和linux的rbtree放在一起,avl真的和rbtree差不多,avl也并不总需要回溯到根节点,虽然旋转次数多于rbtree,但是rbtree保持平衡除了旋转外还有重新着色的操作,即便不旋转也在拼命的重新着色,且层数较高,1百万个节点的rbtree层数和1千万个节点的avl相同。

所以查询,删除,插入全部放在一起来看,avl树和rbtree差不多。

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

1.查找

显然,avl树要比红黑树更平衡,因此avl树的查找效率更高。

2.插入

不论是avl树还是红黑树,旋转的时间复杂度都是O(1)

对于avl树,旋转的时候,需要找到第一个不平衡节点,这就需要我们维护一个平衡因子,每一次插入,旋转,删除等操作,都要更新从跟节点到被修改节点这个路径上的平衡因子。。。最差情况下,需要O(logn)的时间复杂度。。。

热心网友 时间:2022-06-24 23:37

对于红黑树,除了旋转外,最差情况下也需要O(logn)的时间复杂度来调整平衡,注意这只是极端情况下,比如父节点和伯父节点都是红色,曾祖父节点也是红色,这个时候,就要递归的去平衡父节点,然而,采用自顶向下的方法(就是如果一个节点的两个子节点都是红色,就把这个节点变成红色,它的两个子节点变成黑色),减少了多次旋转操作,但也使得调整颜色的操作时间复杂度最差情况下是O(logn)。但这仅仅是很少的情况,所以红黑树的插入操作统计上比avl树要好。。。

热心网友 时间:2022-06-24 23:37

对于avl树,删除意味着某个子树深度减少,这个时候,我们找到第一个不平衡的点,像插入操作那样进行旋转,使得子树平衡,然后,递归的使它的祖先节点也平衡。。。

对于红黑树,也是只有个别情况才会递归平衡父节点,它发生在:兄弟节点是黑色,两个侄儿也是黑色。当兄弟节点是红色的时候,转化为兄弟节点是黑色的情况处理,当两个侄儿有红色节点的时候,则在常数时间内就可以达到平衡。所以,删除操作红黑树的平均效率也比avl树高。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
帮帮忙写个英语作文80字的 谢谢 80年山东高考总分 总胆红素25.44(正常3.4-22),直接胆红素7.13(正常0-6.8... ...参考值 总胆红素 19.4 0-23.0 umol/L 直接胆红素 6.4 0-8.0 umol/... 蟹爪兰冬天多久浇水 冬季蟹爪兰浇水间隔需长达多久 蟹爪兰冬天什么时候浇水好 蟹爪兰冬天多久浇一次水 端午节一家人吃饭的说说 端午节跟谁一起过 端午节一家人聚在一起吃饭的说说 端午节是家人团聚吗 云南白药保险子作用是什么? 这个树是不是平衡二叉树,如果不是,请说明为什么?怎么算? 云南白药里的保险子是干嘛的? 红黑树 是不是平衡二叉树? 云南白药粉里的“保险子”是什么东西? 云南白药胶囊保险子的作用 红黑树与普通的平衡二叉树除了颜色到底有什么区别 云南白药里面那粒保险子有什么用 聊天中的ddd是什么意思? 男生聊天发dddd是什么意思? 云南白药里面的保险子,它是干嘛的呢? 云南白药胶囊瓶里的保险子有什么作用 弱弱的问一句:XDDDDDD什么意思 ddd是什么意思的缩写 ddd是什么意思呀? ddd是什么意思 吃羊肉怎么去除嘴里的羊膻味 如果我说cpdd对方说ddddd是什么意思? ddd是什么意思的缩写? dddd是什么意思的缩写? 什么叫平衡二叉树,KD树是不是就是平衡二叉树呢? 云南白药里的保险子是什么用?可以吃吗? 数据结构中的平衡二叉树怎么理解 云南白药里面那粒保险子,有什么用? 为什么STL和linux都使用红黑树作为平衡树的实现 红米4a手机,放两张卡,默认是一卡流量,想换成2卡流量。可是却掉不了... 云南白药胶囊瓶里的保险子有什么作用? 药物里面有颗保险子,这是起什么作用的? 平衡二叉树的介绍 什么是平衡二叉树? 中药白黎黎能治白癜风吗 云南白药里的保险丸有什么用呀 红米4A如何将首选安装位置调至SD卡? 治疗外阴白斑的中药 云南白药里的保险子,有什么用途?如何用? 二叉树如何转换成平衡二叉树 云南白药里的保险子有什么用 平衡二叉树的作用 云南白药的保险子有什么功效? 云南白药胶囊的保险子能够治疗骨折么,保险子能多吃么