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

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

二叉查找树特征:

1.左子树上所有结点的值均小于或等于它的根结点的值。

2.右子树上所有结点的值均大于或等于它的根结点的值。

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

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

二叉查找树的缺点:

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

a11984aa8c0f741426153d7c9ab00ca3955.jpg

 

9fe1042d1a6114471b5ec9554f7d6fae949.jpg

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

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

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

 

转载于:https://my.oschina.net/u/4120977/blog/3101183

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值