前言
首先要注意的是,本文章不涉及到红黑树的具体实现,也就是说不会逐行分析TreeMap和TreeSet的源码实现,因为红黑树看了也会忘的…
所以本文只是记录红黑树的一些基础介绍,以及TreeMap和...TreeSet两个类的公共API.
----
红黑树
红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。...如果一个结点是红的,那么它的两个儿子都是黑的。
对于任意结点而言,其到叶结点树尾端NIL指针的每条路径都包含相同数目的黑结点。...通过这5个性质,可以保证红黑树的高度永远是logn,所以红黑树的查找、插入、删除的时间复杂度最坏为O(log n).
红黑树有什么作用呢?那就是快,查找,插入,删除的时间复杂度最坏为O(logn)....红黑树的具体实现可以google一下,有很多开源的实现.中心思想就是各种旋转~.
TreeMap
TreeMap是一个有序的key-value集合,基于红黑树(Red-Black tree)实现。