那些年面试官问你的红黑树----->(浅谈)
在了解红黑树之前,先要了解二叉树,又叫二叉查找树、二叉搜索树、二叉排序树。二叉树顾名思义: 是一种每个节点最多有两个子节点的树,同时遵循 左节点的值<父节点的值<右节点的值 这样的规律。
二叉树有如下几个特点:
-
节点的左子节点小于节点本身
-
节点的右子节点大于节点本身
-
左右节点同样为二叉搜索树
下图就是一棵典型的二叉树:
它是一种查找次数小于等于树高的数据结构。如图中树有4层,即树高为4,当我们需要查找8时,经过的路线是这样的:
1、8<9,往左查找
2、8>5,往右查找
3、8>7,往右查找
4、8=8,找到结果
总共查找4次,等于树高。这棵树不管怎么找,查找次数总是小于等于树高。
二叉树的插入同样遵循上述规则,会一步一步对比,从而找到插入的位置,可以想象上图中的8不存在,而是需要插入一个8,结果与上述路线一致。
二叉树的删除会涉及到无子节点和有子节点两种情况,无子节点直接删除即可,有子节点会需要用左边最大值或右边最小值替换当前删除节点,具体不细聊。
当二叉树插入数值不均衡时,会出现树结构的变形与查找性能的损耗,比如现在二叉树有8,9,12三个值,然后需要插入7,6,5,4,3这五个值时,产生的结构如下图所示:
树高会不合理的增高,查找效率也无法得到保证。红黑树就是为了解决这种情况而诞生的。
红黑树又称为自平衡二叉树,它符合二叉树的规则同时比它的规则更加的复杂,具体规则如下:
1、所有节点都是红色或黑色
2、根节点为黑色
3、所有叶子都是黑色(NIL节点)
4、每个红色节点必须有两个黑色的子节点。(不能有两个连续的红色节点。)
5、从任一节点到其每个叶子的所有简单路径(不要回退)都包含相同数目的黑色节点。
具体样子如下图所示:
解释一下几个规则的含义:
1和2很好理解,节点都是红和黑,根节点是黑色的。
3所有叶子都是黑色的,叶子与叶子节点是两个概念,叶子不是一个节点,可以理解为没有数值的空节点,也就是图中的NIL。
4也很好理解,红色节点的子节点都是黑色的,这就保证了没有两个连续的红色节点。
5稍微解释一下,简单路径就是说一次到底,不要回退,叶子就是NIL,比如从8这个节点出发,不管是去1下面的叶子,11下面的叶子,还是6下面的叶子,都是经过一个黑色节点,从任何节点出发都是一样的规则,经过相同数量的黑色节点。
以上5个规则,加上二叉树的规则,就组成了红黑树这一极具特点的树型数据结构。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java性能调优实战(二) | 如何制定性能调优策略
测试 - 分析 - 调优 性能测试攻略 性能测试是提前能发现性能瓶颈,保障系统性能稳定的必要措施。 1.微基准性能测试 微基准性能测试可以精确定位到某个模块或者某个方法的性能问题,特别适合做一个功能模块或者一个方法在不同实现方式下的性能对比。例如,对比一个方法使用同步实现和非同步实现的性能。 2.宏基准性能测试 宏基准性能测试是一个综合测试,需要考虑到测试环境、测试场景和测试目标。 首先看测试环境,我们需要模拟线上的真实环境。 然后看测试场景。我们需要确定在测试某个接口时,是否有其他业务接口同时也在平行运行,造成干扰。如果有,请重视,因为你一旦忽视了这种干扰,测试结果就会出现偏差。 最后看测试目标。我们的性能测试是要有目标的,这里可以通过吞吐量以及响应时间来衡量系统是否达标。不达标,就进行优化;达标就继续加大测试的并发数,探底接口的 TPS(最大每秒事务处理量),这样做,可以深入了解到接口的性能。除了测试接口的吞吐量和响应时间以外,我们还需要循环测试可能导致性能问题的接口,观察各个服务器的 CPU 、内存以及 I/O 使用率的变化。 以上就是两种测试方法的详解。其中值得注意的是,性能测...
- 下一篇
X.Org Server 1.20.9 发布
X.Org Server 1.20.9 已发布,新版本除了改进功能外,还提供了不少针对XWayland的修复,其中包括可能在启动时导致无限循环的错误、DMA-BUF 修复,以及其他潜在的崩溃修复等。 X.Org Server 1.20.9 还对平台设备探测功能进行了改进,在将软件光标(software cursor)与 xf86-video-modesetting、整数下溢修复程序和其他不同修复程序一起使用时,禁用了页面翻转功能(page-flipping)。 此外,1.20.9 还解决了一些安全问题,这些问题可能“导致在 X server 提权运行的系统上提升本地权限”。 完整修复列表查看发布公告。 由于 X.Org Server 缺乏管理,两年前的 X.Org Server 1.20 系列目前仍是在进行小版本更新,所以 X.Org Server 1.21 发布的机会比较渺茫。像 Red Hat 的工程师们只是在努力推动 (X)Wayland 的发展,因此对X.Org Server 新功能发布的动力较小。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Red5直播服务器,属于Java语言的直播服务器