红黑树(面试会问的数据结构)

要理解红黑树就要先理解二叉查找树面试

二叉查找树特征:segmentfault

1.左子树上全部结点的值均小于或等于它的根结点的值。性能

2.右子树上全部结点的值均大于或等于它的根结点的值。blog

3.左、右子树也分别为二叉排序树。排序

二叉查找树的优势:查找所需数的最大次数为等同于二叉查找树的高度。插入的时候也是相似,经过一层层比较大小,找到适合插入的位置。class

二叉查找树的缺点:jdk

如图,原始只有三个点,当插入5,6,7以后就会致使查找的性能下降,几乎变成线性im

 

而红黑树正是为了解决二叉查找树屡次插入新节点而致使的不平衡img

红黑树:是一种自平衡的二叉查找树。除了符合二叉查找树的基本特征外还有以下特性。(红黑树从根到叶子的最长路径不超过最短路径的两倍)红黑树

1.节点是红色或黑色。

2.根节点是黑色。(记)

3.每一个叶子节点都是黑色的空节点。(记)

4 每一个红色节点的两个子节点都是黑色。(就是不能有连续的红色)(记)

5.从任一节点到其每一个叶子的全部路径都包含相同数目的黑色节点。(记)

下图中这棵树,就是一颗典型的红黑树:

 

红黑树的特性和优点,及在什么状况下须要变色什么状况下须要旋转

 

面试问题:

一.红黑树有哪些性质?

1.节点是红色或黑色。

2.根节点是黑色。

3.每一个叶子节点都是黑色的空节点。

4 每一个红色节点的两个子节点都是黑色。(就是不能有连续的红色)

5.从任一节点到其每一个叶子的全部路径都包含相同数目的黑色节点。

 

2.红黑树的各类操做的时间复杂度是多少?

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

3.红黑树的应用:

应用有不少,jdk的集合类TreeMap和TreeSet底层就是红黑树实现的。Jdk8中HashMap也用到了红黑树。

想要理解清楚:https://segmentfault.com/a/1190000014037447?utm_source=tag-newest

相关文章
相关标签/搜索