面试题——轻松搞定面试中的红黑树问题

  • 时间:
  • 浏览:2

这刚刚红黑树就变成了一棵顺序统计树。

设有有有一一3个哈希函数

H( c ) = c % N;

当N取有有一一3个合数时,最简单的例子是取2^n,比如说取2^3=8,这刚刚

H( 11400(二进制) ) = H( 28 ) = 4

H( 10400(二进制) ) = H( 20 )= 4

这刚刚c的二进制第4位(从右向左数)就”失效”了,也刚刚 说,无论第c的4位取那先 值,总要原应H( c )的值一样.这刚刚c的第四位就根本不参与H( c )的运算,原先H( c )就无法删改地反映c的社会形态,增大了原应冲突的几率.

9 为那先 一般hashtable的桶数会取有有一一3个素数

<<Introduction to Algorithms>> Chapter 13 Red-Black Trees Chapter 14 Augmenting Data Structures

4).设计新的操作。

   连续两次面试都问到了红黑树,关键两次都越来越答好,这次就删改地来学习挂接一下。

教你透彻了解红黑树 

你什儿 太好刚刚 求节点元素的顺序统计量,当然任意的顺序统计量都可不可否 时要在O(lgn)时间内选用。

2).选用某个结点刚刚有哪几次个结点,也刚刚 大伙儿儿 要外理的难题报告 ;

8.扩展数据社会形态有那先 步骤?

4.红黑树的各种操作的时间简化度是哪几次?

红黑树通过扩展节点域可不可否 在不改变时间简化度的情形下得到结点的秩。

红黑树

3).验证可用基础数据社会形态上的基本修改操作来维护那先 新再加的信息;

版权所有,转载请注明出处,谢谢!

http://blog.csdn.net/silangquan/article/details/18655795

2.红黑树的数据社会形态为啥定义?

能保证在最坏情形下,基本的动态几何操作的时间均为O(lgn)

size[x] = size[[left[x]] + size [right[x]] + 1;

一般的,红黑树,满足以下性质,即可不可不是有助于 满足以下删改性质的树,大伙儿儿 才称之为红黑树:

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

2)根结点是黑的。

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

4)原应有有一一3个结点是红的,越来越它的有有一一3个儿子都是黑的。

5)对于任一结点而言,其到叶结点树尾端NIL指针的每十根路径都蕴藏相同数目的黑结点。

取刚刚 合数时,总要不同程度的原应c的刚刚 位”失效”,从而在刚刚 常见应用中原应冲突.

(当事人意见:假若不取质数速率刚刚 会太差..假若无疑取质数之比较保险的..)

2.红黑树的数据社会形态为啥定义的?

红黑树的算法时间简化度和AVL相同,但统计性能比AVL树更高,全都有在插入和删除中所做的后期维护操作肯定会比红黑树要耗时好多,假若大伙儿儿 的查找速率都是O(logN),全都有红黑树应用还是高于AVL树的. 实际上插入 AVL 树和红黑树的速率取决于你所插入的数据.原应你的数据分布较好,则比较宜于采用 AVL树(类式随机产生系列数),假若原应你想外理比较杂乱的情形,则红黑树是比较快的

9 为那先 一般hashtable的桶数会取有有一一3个素数



思路:size[left[x]]表示在对x为根的子树进行中序遍历时排在x刚刚的个数,递归调用的淬硬层 不必超过O(lgn);

权衡有有一一3个因素: 查找速率, 数据量, 内存使用,可扩展性。

  总体来说,hash查找速率会比map快,假若查找速率基本和数据量大小无关,属于常数级别;而map的查找速率是log(n)级别。固然常数就比log(n) 小,hash还有hash函数的耗时,明白了吧,原应你考虑速率,很糙是在元素达到一定数量级时,考虑考虑hash。但若你对内存使用很糙严格, 希望多多守护进程 尽原应少消耗内存,越来越一定要小心,hash原应会让他陷入尴尬,很糙是当你的hash对象很糙多时,你就更无法控制了,假若 hash的构造速率较慢。

7.怎么可否扩展红黑树来获得比某个结点小的元素有哪几次个?

1).选用基础数据社会形态;

思路:x的秩可不可否 视为在对树的中序遍历种,排在x刚刚的结点个数再加一。最坏情形下,OS-RANK运行时间与树高成正比,全都有为O (lgn).

4.红黑树的各种操作的时间简化度是哪几次?

2).选用要在基础数据社会形态种再加那先 信息;

利用size域可不可否 做两件事:

相比于BST,原应红黑树可不可否 能确保树的最长路径不大于两倍的最短路径的长度,全都有可不可否 看出它的查找效果是有最低保证的。在最坏的情形下有有助于否 保证O(logN)的,这是要好于二叉查找树的。原应二叉查找树最坏情形可不可否 让查找达到O(N)。

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

5.红黑树相比于BST和AVL树有那先 优点?

3.红黑树有那先 性质?

1.stl中的set底层用的那先 数据社会形态?

删改解答

3.红黑树有那先 性质?

越来越学习过红黑树的同学请参考:

7.怎么可否扩展红黑树来获得比某个结点小的元素有哪几次个?

红黑树是牺牲了严格的淬硬层 平衡的优越条件为代价,它假若求次要地达到平衡要求,降低了对旋转的要求,从而提高了性能。红黑树有有助于以O(log2 n)的时间简化度进行搜索、插入、删除操作。此外,原应它的设计,任何不平衡总要在三次旋转之内外理。当然,还有刚刚 更好的,但实现起来更简化的数据社会形态有有助于做到一步旋转之内达到平衡,但红黑树有有助于给大伙儿儿 有有一一3个比较“便宜”的外理方案。

红黑树并不适应所有应用树的领域。原应数据基本上是静态的,越来越让大伙儿儿 待在大伙儿儿 有有助于插入,假若不影响平衡的地方会具有更好的性能。原应数据完都是静态的,类式,做有有一一3个哈希表,性能原应会更好刚刚 。

在实际的系统中,类式,时要使用动态规则的防火墙系统,使用红黑树而都是散列表被实践证明具有更好的伸缩性。Linux内核在管理vm_area_struct时刚刚 采用了红黑树来维护内存块的。

5.红黑树相比于BST和AVL树有那先 优点?

6.红黑树相对于哈希表,在选用使用的刚刚有那先 最好的办法?

6.红黑树相对于哈希表,在选用使用的刚刚有那先 最好的办法?

在每个节点再加有有一一3个size域,表示以结点 x 为根的子树的结点树的大小,则有

1.stl中的set底层用的那先 数据社会形态?

8.扩展数据社会形态有那先 步骤?