疑难重点分享|红黑树
Posted 程序员食堂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了疑难重点分享|红黑树相关的知识,希望对你有一定的参考价值。
秋招也快要接近尾声了
抽时间整理了一些爱被问到的难点
供大家后续学习
连续几次面试都问到了红黑树
这次就完整地来整理学习一下
1.stl中的set底层用的什么数据结构?
红黑树
2.红黑树的数据结构怎么定义?
3.红黑树有哪些性质?
一般的,红黑树,满足以下性质,即只有满足以下全部性质的树,我们才称之为红黑树:
1)每个结点要么是红的,要么是黑的。
2)根结点是黑的。
3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点)是黑的。
4)如果一个结点是红的,那么它的俩个儿子都是黑的。
5)对于任一结点而言,其到叶结点树尾端NIL指针的每一条路径都包含相同数目的黑结点。
4.红黑树的各种操作的时间复杂度是多少?
能保证在最坏情况下,基本的动态几何操作的时间均为O(lgn)
5.红黑树相比于BST和AVL树有什么优点?
红黑树是牺牲了严格的高度平衡的优越条件为代价,它只要求部分地达到平衡要求,降低了对旋转的要求,从而提高了性能。
红黑树能够以O(log2n)的时间复杂度进行搜索、插入、删除操作。
此外,由于它的设计,任何不平衡都会在三次旋转之内解决。
当然,还有一些更好的,但实现起来更复杂的数据结构能够做到一步旋转之内达到平衡,但红黑树能够给我们一个比较“便宜”的解决方案。
相比于BST,因为红黑树可以能确保树的最长路径不大于两倍的最短路径的长度,所以可以看出它的查找效果是有最低保证的。在最坏的情况下也可以保证O(logN)的,这是要好于二叉查找树的。
因为二叉查找树最坏情况可以让查找达到O(N)。
红黑树的算法时间复杂度和AVL相同,但统计性能比AVL树更高,所以在插入和删除中所做的后期维护操作肯定会比红黑树要耗时好多,但是他们的查找效率都是O(logN),所以红黑树应用还是高于AVL树的. 实际上插入 AVL 树和红黑树的速度取决于你所插入的数据.如果你的数据分布较好,则比较宜于采用 AVL树(例如随机产生系列数),但是如果你想处理比较杂乱的情况,则红黑树是比较快的。
6.扩展数据结构有什么步骤?
1).选择基础数据结构;
2).确定要在基础数据结构种添加哪些信息;
3).验证可用基础数据结构上的基本修改操作来维护这些新添加的信息;
4).设计新的操作。
还有一部分内容
新卓越报名火热进行中~
C语言/Java/前端就业班开启招生模式
大三实习班
大四秋招班
最后一班车
你赶上了没?
现报名即可领取小抱枕(内带小被子)~
【西科大校区】
【邮电校区】
以上是关于疑难重点分享|红黑树的主要内容,如果未能解决你的问题,请参考以下文章