参考回答:
考察点:算法
公司:京东,阿里巴巴

1)平衡二叉树(AVL树):红黑树是在AVL树的基础上提出来的。平衡二叉树又称为AVL树,是一种特殊的二叉排序树。其左右子树都是平衡二叉树,且左右子树高度之差的绝对值不超过1。AVL树中所有结点为根的树的左右子树高度之差的绝对值不超过1。将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF,那么平衡二叉树上的所有结点的平衡因子只可能是-1、
0和1。只要二叉树上有一个结点的平衡因子的绝对值大于1,则该二叉树就是不平衡的。

2)红黑树:

红黑树是在AVL树的基础上发展而来的。红黑树是一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是
红或黑(非红即黑)。通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径会比其它
路径长出两倍,因此,红黑树是一种弱平衡二叉树,相对于要求严格的AVL树来说,它的旋转次数少,所以对于搜索,插入,
删除操作较多的情况下,通常使用红黑树。

性质:

1. 每个节点非红即黑2. 根节点是黑的;3. 每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的;4. 如果一个节点是红色的,则它的子节点必须是黑色的。5. 对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点;

从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。它可以在O(log n)时间内做查找,插入和删除,这里的n 是树中元素的数目。恢复红黑属性需要少量(O(log n))的颜色变更(这在实践中是非常快速的)并且不超过三次树旋转(对于插入是两次)。这允许插入和删除保持为 O(log n) 次,

3)红黑树较AVL树的优点:

AVL 树是高度平衡的,频繁的插入和删除,会引起频繁的rebalance,导致效率下降;红黑树不是高度平衡的,
算是一种折中,插入最多两次旋转,删除最多三次旋转。所以红黑树在查找,插入删除的性能都是O(logn),且性能稳定,所以STL里面很多结构包括map底层实现都是
使用的红黑树。

4)红黑树旋转:

旋转:红黑树的旋转是一种能保持二叉搜索树性质的搜索树局部操作。有左旋和右旋两种旋转,通过改变树中
某些结点的颜色以及指针结构来保持对红黑树进行插入和删除操作后的红黑性质。左旋:对某个结点x做左旋操作时,假设其右孩子为y而不是T.nil:以x到y的链为“支轴”进行。使y成为该子树新
的根结点,x成为y的左孩子,y的左孩子成为x的右孩子。

右旋:对某个结点x做右旋操作时,假设其左孩子为y而不是T.nil:以x到y的链为“支轴”进行。使y成为该子树新的根结点,
x成为y的右孩子,y的右孩子成为x的左孩子。

请你说一说红黑树的性质还有左右旋转相关推荐

  1. 红黑树 键值_Java集合框架:红黑树概念、插入及旋转操作详细解读就问你会不会...

    初识TreeMap 之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增.删.改.查,从存储角度考虑,这两种数据结构是非常优秀的.另外, ...

  2. 红黑树-介绍/性质/定理/基本操作/特点

    一.什么是红黑树 红黑树就是一种平衡的二叉查找树,说他平衡的意思是他不会变成"瘸子",左腿特别长或者右腿特别长. 二.红黑树的性质 除了符合二叉查找树的特性之外,还具体下列的特性: ...

  3. 红黑树的性质以及时间复杂度证明

    很久就想写一篇红黑树的博客,一直没有倒出时间,今天想稍微的总结下红黑树,但是并不想介绍如何的进行插入删除,以及怎么进行旋转,变色,本编文章主要讲解红黑树的时间复杂度的证明,要想证明红黑树的时间复杂度, ...

  4. python 红黑树_python学习笔记|红黑树(性质与插入)

    定义 一种含有红黑节点并能自平衡的二叉查找树(BST) 性质 1.每个节点有红/黑标记位 2.根节点是黑色(硬性规定) 3.每个叶子节点(NIL)都是黑色的虚节点(由此引出性质5) 叶子节点 colo ...

  5. 红黑树 删除某节点后 旋转3次 举例

    博客转自自己的新浪博客,属于自己原创 下面对红黑树删除某节点后,旋转三次的例子做出详解: 先利用代码建立树如下: 修改颜色分布为下列树: 修改颜色分布后,利用 tree->insert(1); ...

  6. 面试题(32)|数据结构(11):红黑树

    更多文章见C++面试题系列 产生背景: 红黑树解决了平衡二叉树为了重新维持平衡旋转成本太高的问题. 平衡二叉树又称AVLTree,平衡二叉树最大的作用是查找,因为AVL树的查找,插入和删除在平均和最坏 ...

  7. 详解平衡二叉树(AVL),红黑树与平衡二叉树的区别

    目录 1.什么是平衡二叉树 2.平衡二叉树的失衡调整 2.1 左旋 2.2 右旋 3. AVL树的四种插入节点方式 4.平衡二叉树完整代码实现 5.红黑树与平衡二叉树 5.1 红黑树的性质 5.2 旋 ...

  8. 从2-3树谈到左倾红黑树

    2-3树 定义 顾名思义,2-3树,就是有2个儿子或3个儿子的节点.2-3树就是由这些节点构成.所以2-3-4树的每个节点都是下面中的一个: 空节点:空节点. 2-节点:包含一个元素和两个儿子. 3- ...

  9. 通用算法 - [树结构] - 红黑树

    <1> 红黑树 参考:30张图带你彻底理解红黑树 红黑树是一种二叉查找树,但在每个结点上增加了一个存储位表示结点的颜色,可以是RED或者BLACK.通过对任何一条从根到叶子的路径上各个着色 ...

  10. 请你回答一下map底层为什么用红黑树实现

    参考回答: 1.红黑树: 红黑树是一种二叉查找树,但在每个节点增加一个存储位表示节点的颜色,可以是红或黑(非红即黑). 通过对任何一条从根到叶子的路径上各个节点着色的方式的限制,红黑树确保没有一条路径 ...

最新文章

  1. ggplot2版聚类物种丰度堆叠图
  2. 温度自动调节 c语言编写,室内温度自动调节控制系统课程设计(26页)-原创力文档...
  3. 互联网1分钟 |1127
  4. xfce中鼠标的“反转卷轴方向“
  5. linux用户命令解释器,Linux下的命令解释器 ash.exe
  6. Spring使用@PropertySource加载Properties配置文件
  7. 轻松了解模型评价指标
  8. 通用浏览器插件技术概况与分析
  9. CNN(卷积神经网络)的深度
  10. CSS背景background和显示元素
  11. php面试题狼兔,面试题总结 - 疯狂的兔子的个人空间 - OSCHINA - 中文开源技术交流社区...
  12. Android12 (S) 获取wifi名称(SSID)的方法
  13. 如何快速新建文件和文件夹
  14. 汇总解决idea出现import包时报错Java:程序包xxxx不存在,但包确实存在的问题
  15. H5的rem适配方案
  16. python画三维立体图完整代码_如何用Matplotlib 画三维图的示例代码
  17. 【CVPR2020】Detection in Crowded Scenes: One Proposal, Multiple Predictions笔记
  18. 机房环境监控系统品牌-深圳计通
  19. 德艺双修才貌双全 史上16位青楼佳人 迷住宋徽宗的李师师
  20. php获取附近的商家

热门文章

  1. 成本会计的概念、产品成本核算的要求、产品成本核算的对象与成本项目、产品成本的归集和分配(可能考判断)、产品成本计算方法 (三种:产品的品种(品种法),批次(分批法),步骤(分步法))
  2. 基于SSH 实验室设备管理系统详细功能
  3. javaweb问题集锦: HikariPool-1 - Connection is not available, request timed out after 60001ms.
  4. 帆软实现分页时第一行和最后两行冻结方式
  5. 全基因组重测序数据分析
  6. 吴伯凡-认知方法论-知行合一的本质
  7. 吴伯凡-认知方法论-效率高并不一定是好事
  8. 在VMware虚拟机环境下为msdos7.1安装masm
  9. word2007删除某一页的页眉横线
  10. 磁传感器AKM8975驱动和中间层