TreeMap使用红黑树来存储数据,红黑树是一种平衡二叉查找树,它是一种高效的搜索算法,它的算法时间复杂度是O(lgn),本文不涉及红黑树的定义及操作细节,只涉及部分有助于理解TreeMap的内容。本文旨在从整体上理解TreeMap工作原理,不深入细节。 为了保持简洁凸出重点,本文的示例图中树的结点只显示键(key)不显示值(value)。
二叉查找树
二叉查找树是常用的搜索类算法,它有三个特点:
- 它是一颗二叉树,即每个节点都有两个子节点left、right
- 每个节点的左节点键值小于等于当前节点键值
- 每个节点的右节点键值大于等于当前节点键值
下面是一颗普通二叉查找树示例,树节点存储了键值对,
从上图可以看出,每个节点大于或等于左节点,小于或等于右节点。二叉搜索树的时间复杂度为O(h),h表示一颗树的高度,高度是一颗树的最长路径,上图中的树高度为5。普通二叉查找树最坏情况下的时间复杂度为O(n),n为存储的数据量。当n个有序的数据插入到普通二叉查找树时,它会变成一个链表,也可以称之为高度为n的二叉树。如下图所示: