首页 微博热点 正文

红黑树面试题目---C 技术工程师-伟德BETVICTOR_伟德国际app-官方下载

1.stl中的set底层用的什么数据结构?

红黑树

2.红黑树的数据结构怎样界说?

[cpp] view plain copy

1enum Color

2.{

3. RED = 0,

4. BLACK = 1九真九阳

5.};

6.

7.struct RBTreeNo论以貌取人的下场de

8.{

9. struct RBTreeNode*left, *right, *parent;

10. int key;

11. int data;

12. Color color;

13.};

3.红黑树有哪些性质?

一般的,红黑树,满意以下性质,即只过油肉的做法有满意以下悉数性质的树,咱们才称之为红黑树:

1)每个结点要么是红的,要么是黑的。

2)根结点是黑的。

3)每个叶结点(叶结点即指树尾端NIL指针或NULL结点)是黑的。

4)假如一个结点是红的,那么它的俩个儿子都是黑的。

5)关于任一结点而言,其到叶结点其他树尾端NIL指针的每一条途径都包括相同数目的黑结点。

4.红黑树的各种操作的时刻凌乱度是多少?

能确保在最坏状况下,根本的动态几许操作的时刻均为O(lgn)

5.红黑树比较于BST和AVL树有什么长处?

红黑树是bt鹰献身了严厉的高度平衡的优胜条件为价值,它只要求部分地到达平衡要求,降低了对旋转的要求,然后提高了功能。

红黑树能够以O(log2 n)的时刻凌乱度进行查找、刺进、删去操作。此外,由于它的规划,任何不平衡都会在三次旋转之内处理。

当然,还有一些更好的,但完成起来更凌乱的数据结构能够做到一步旋转之内到达平衡,但红黑树能够给咱们一个比较“廉价”的处理方案。

比较于BST,由于红黑树能够能确保树的最长途径不大于两倍的最短途径的长度,所以能够看出它的查找作用是有最低确保的。

在最坏的状况下也能够确保O(logN)的,这是要好于二叉查找树的。由于二叉查找树最坏状况能够让查找到达O(N)。

红黑树的算法时刻凌乱度和AVL相同,但计算功能比AVL树更高,所以在刺进和删去中所做的后期保护操作必定会比红黑树要耗时很多,

可是他们的查找功率都是O(logN),所以红黑树运用仍是高于红黑树面试标题---C 技能工程师-伟德BETVICTOR_伟德世界app-官方下载 AVL树的. 实践上刺进 AVL 树和红黑树的速度取决于你所刺进的数据。

假如你的数据散布较好,则比较适宜选用 AVL树(例如随机发生系列数),可是假如你想处理比较凌乱的状况,则红黑树是比较快的。

6.红黑树相关于哈希表,在挑选运用的时分有什么根据?

权衡三个要素: 查找速度, 数据量, 内存运用,可扩展性。

整体来说,hash查找速度会比map快,而且查找速度根本和数据量巨细无关,归于常数等级;而map的查找速度是log(n)等级。

并不必定常数就比log(n) 小,hash还有hash函数的耗时,理解了吧,假如红黑树面试标题---C 技能工程师-伟德BETVICTOR_伟德世界app-官方下载 你考虑功率,特别是在元素达游到必定数量级时,考虑考虑hash。

但若你对内存运用特别严厉, 期望程序尽可能少耗费内存,那么必定要当心,hash可能会让你硕士堕入为难,特别是当你的hash目标特别多时,

你就更无法控制了,而且 hash的结构速度较慢。

红黑树并不习惯一切运用树的范畴。假如数据根本上是静态的,那么让他们天台山待在他们能够刺进,而且不影响平衡的当地会具有更好的功能。

假如数据完全是静态的,例如,做一个哈希表,功能可能会更好一些。在实践的体系中,例如,需求运用动态规矩的防火墙体系,

运用红黑树而不是散列表被实践证明具有更好的伸缩性。Linux内核在办理vm_area_struct时便是宝物方案选用了红黑树来保护内存块的。

红黑树经过扩展节点域能够在不改动时刻凌乱度的状况下得到结点的秩。

7.怎么扩展红黑树来取得比某个结点小的元素有多少个?

这其实便是求节点元素的次序计算量,当然恣意的次序计算量都能够需求在O(lgn)时刻内确认。chn142

在每个节点qx50增加一个size域,表明以结点 x 为根的子树的结点树的巨细,则有

size[x] = size[[left[x]] + si红黑树面试标题---C 技能工程师-伟德BETVICTOR_伟德世界app-官方下载 ze [right[x]] + 1;

这时分男主痴汉红黑树就变成了一棵次序计算树。

使用size域能够做两件事:

1). 找到树中第i小的结点;

[cpp] view plain copy
1. OS-SELECT(x;,i)
2. r = size[left[x]] + 1;
3. if i == r
4. return x
5. elseif i < r
6.女人与狗 return OS-SELE痤疮图片CT(left[x], i)
7. else return OS-SELECT(right[x], i)

思路:size[left[x]]表明在对x为根的子树进行中序遍历时排在x之前的个数,递归调用的深gx门度不会超越O(lgn);红黑树面试标题---C 技能工程师-伟德BETVICTOR_伟德世界app-官方下载

2错版硬币).红黑树面试标题---C 技能工程师-伟德BETVICTOR_伟德世界app-官方下载 确认某个结点之前有多少个结点,也便是咱们要处理的问题;

[cpp] view plain copy

1. OS红黑树面试标题---C  技能工程师-伟德BETVICTOR_伟德世界app-官方下载 -RANK(T,x)
2. r = x.left.size + 1;
3. y = x;
4. while y != T.root
5. if y =天将女子= y.p.right
6.崔雪莉ktv相片事情 r = r + y.p.left.size +1
7. y = y.p
8. return r

思路:x的秩能够视为在对树的中序遍历种,排在x之前的结点个数加上一。最坏状况下,OS-RANK运转时刻与树高成正比,所认为O (lgn).

8.扩展数据结构有什么过程?

1).挑选根底数据结构;

2).确认要在根底数据结构种增加哪些信红黑树面试标题---C 技能工程师-伟德BETVICTOR_伟德世界app-官方下载 息;

3).验证可用根底数据周涛的女儿结构上的根本修正操作来保护这些新增加的信息;

4).规划新的操作。

原文链接:https://blog.csdn.net/N1314N/article/details/89889446

想要学习或许材料获取能够私信我关键字【材料】+材料名。