【场景】: 平衡二叉搜索树、HashMap...
【前言】: 本文仅对红黑树做简单的介绍,以便了解新知识的伙伴快速入门学习,也供自己学习,日后也可快速的重新复习(单纯脑子...呸 记性不好)
【首先】 我们需要了解什么是红黑树
红黑树首先是一棵自平衡二叉搜索树,不仅具有其特性,还具有以下几个特点:
- 【根叶全黑】: 根节点是黑色, 叶节点是不存储数据的黑色空节点;
- 【无相邻红节点】:任何相邻的节点都不能同时为红色,既每个节点要么为黑要么为红,如果一个节点是红色,则孩子节点为黑色;
- 【到任意的叶节点黑节点个数相同】:任意节点到叶节点的路径中,都包含相同个数的黑色节点。
【红黑树的优势?】
红黑树是用非严格的平衡来换取增删节点时候旋转次数的降低,任何不平衡都会在三次旋转之内解决,而AVL(二叉搜索树)是严格平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多。故:红黑树的插入效率更高
【红黑树的应用】
身为Java(内卷)小小程序猿,用得最多的就是在HashMap中有见到红黑树的影子....
为啥数组和链表的方式在效率上已经较为卓越 ,却在JDK1.8后要在HashMap中用上红黑树这个结构 友友们可以看看我的另一篇文章(还在写...等我一会)
【时间复杂度】
既然红黑树是一颗平衡二叉搜索树,那么它的查找、插入、删除的时间复杂度均为:O(lg n)
红黑树举例:
【最后】
本文仅对红黑树做一个基本的介绍,至于红黑树的旋转、插入的等进一步的操作并未作介绍。当然小伙伴觉得以上的内容有问题或是疑义的欢迎私信更改 希望大家一起进步~