红黑树是一种自平衡的二叉查找树,是一种高效的查找树。它是由 Rudolf Bayer 于1972年发明,在当时被称为对称二叉 B 树(symmetric binary B-trees)。后来,在1978年被 Leo J. Guibas 和 Robert Sedgewick 修改为如今的红黑树。
红黑树具有良好的效率,它可在 O(logN) 时间内完成查找、增加、删除等操作。因此,红黑树在业界应用很广泛,比如 Java 中的 TreeMap,JDK 1.8 中的 HashMap、C++ STL 中的 map 均是基于红黑树结构实现的。
简单: 它的理解很简单 ,为了提高查询的效率,它分为了好几个节点进行查询,所说从十亿条数据中查询一条数据的时候,查询次数不到30次,这就见证了算法的微妙之处
复杂:因为简单而复杂,它的理解越简单,它的内部就越复杂,通过左节点和右节点的区分
左节点: 存放比主节点小的元素
右节点: 存放比主节点大的元素
这样存放下去左节点和右节点也会作为主节点继续向下传递
Java中的HashMap集合在1.8之后新增了红黑树这个特性
1、因为原来的数组链表存储量太大
2、 查询延迟慢
所以HashMap集合在1.8之后添加了红黑树这个新的特性查询效率大了不止1倍!