某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,而且称其为红黑树,由于左倾红黑树与普通的红黑树相比,实现起来较为简单,容易教学。在这里,咱们区分开左倾红黑树和普通红黑树。算法
红黑树是一种近似平衡的二叉查找树,从2-3
树或2-3-4
树衍生而来。经过对二叉树节点进行染色,染色为红或黑节点,来模仿2-3
树或2-3-4
树的3节点和4节点,从而让树的高度减少。2-3-4
树对照实现的红黑树是普通的红黑树,而2-3
树对照实现的红黑树是一种变种,称为左倾红黑树,其更容易实现。segmentfault
使用平衡树数据结构,能够提升查找元素的速度,咱们在本章介绍2-3-4
树,再用二叉树形式来实现2-3-4
树,也就是普通的红黑树。数组
红黑树能够用来做为字典Map
的基础数据结构,能够存储键值对,而后经过一个键,能够快速找到键对应的值,相比哈希表查找,不须要占用额外的空间。咱们以上的代码实现只有value
,没有key:value
,能够简单改造实现字典。数据结构
Java
语言基础类库中的HashMap
,TreeSet
,TreeMap
都有使用到,C++
语言的STL
标准模板库中,map
和set
类也有使用到。不少中间件也有使用到,好比Nginx
,但Golang
语言标准库并无它。并发
我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook。数据结构和算法