数据结构和算法(Golang实现)(30)查找算法-2-3-4树和普通红黑树

2-3-4树和普通红黑树

某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,而且称其为红黑树,由于左倾红黑树与普通的红黑树相比,实现起来较为简单,容易教学。在这里,咱们区分开左倾红黑树和普通红黑树。算法

红黑树是一种近似平衡的二叉查找树,从2-3树或2-3-4树衍生而来。经过对二叉树节点进行染色,染色为红或黑节点,来模仿2-3树或2-3-4树的3节点和4节点,从而让树的高度减少。2-3-4树对照实现的红黑树是普通的红黑树,而2-3树对照实现的红黑树是一种变种,称为左倾红黑树,其更容易实现。segmentfault

使用平衡树数据结构,能够提升查找元素的速度,咱们在本章介绍2-3-4树,再用二叉树形式来实现2-3-4树,也就是普通的红黑树。数组

3、应用场景

红黑树能够用来做为字典Map的基础数据结构,能够存储键值对,而后经过一个键,能够快速找到键对应的值,相比哈希表查找,不须要占用额外的空间。咱们以上的代码实现只有value,没有key:value,能够简单改造实现字典。数据结构

Java语言基础类库中的HashMapTreeSetTreeMap都有使用到,C++语言的STL标准模板库中,mapset类也有使用到。不少中间件也有使用到,好比Nginx,但Golang语言标准库并无它。并发

系列文章入口

我是陈星星,欢迎阅读我亲自写的 数据结构和算法(Golang实现),文章首发于 阅读更友好的GitBook数据结构和算法

相关文章
相关标签/搜索