栈(stack):先进后出; 队列(queue):先进先出; 数组(Array):有序的元素序列;查询快(数组的地址是连续的),增删慢; 链表(linked list):由一系列结点node(链表中的每一个元素称为结点)组成, 二叉树——红黑树: ...
分类:
其他好文 时间:
2019-04-05 20:18:34
阅读次数:
163
说到HashMap,就一定要说到红黑树,红黑树作为一种自平衡二叉查找树,是一种用途较广的数据结构,在jdk1.8中使用红黑树提升HashMap的性能,今天就来说一说红黑树。 ...
分类:
其他好文 时间:
2019-04-05 11:59:28
阅读次数:
134
死磕 java集合之TreeMap源码分析(三) 红黑树删除元素的时间复杂度如何? 为什么删除元素之后要做平衡? 以什么样的形式平衡最省时间? ...
分类:
编程语言 时间:
2019-04-05 00:36:33
阅读次数:
163
死磕 java集合之TreeMap源码分析(四) 红黑树是通过中序遍历进行的吗? 有没有更高效的遍历方式? 如何按范围查找元素? 如何查找最近的元素? ...
分类:
编程语言 时间:
2019-04-05 00:17:51
阅读次数:
181
死磕 java集合之TreeMap源码分析(二)
红黑树插入元素的时间复杂度如何?
为什么插入元素之后要做平衡?
以什么样的形式平衡最省时间?
如果插入元素的顺序不一样,会得到同样的树吗?
分类:
编程语言 时间:
2019-04-04 23:02:49
阅读次数:
202
一:树的定义 树是一种数据结构,由n(n>1)个有限结点组成一个有层次关系的集合。形状像一颗倒立的树而得名。分为:无序树,有序树,二叉树,满二叉树,完全二叉树,平衡二叉树(AVL),二叉查找树(二叉搜索树、BST),霍夫曼树,红黑树,B-tree(B-树或者B树),B+树,B*树等。 节点结构体(C ...
分类:
编程语言 时间:
2019-04-04 17:16:15
阅读次数:
249
死磕 java集合之TreeMap源码分析(一)
红黑树是什么?有什么特性?
它的时间复杂度是多少?
它跟SortedMap有什么区别和联系?
它的左旋、右旋是怎么玩的?
分类:
编程语言 时间:
2019-04-04 11:19:33
阅读次数:
185
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805346063728640 题意: 给定一棵二叉搜索树的先序遍历结果,问这棵树是不是一棵红黑树。 思路: 首先需要明确二叉搜索树和红黑树的性质。 二叉搜索树的每个节点 ...
分类:
其他好文 时间:
2019-04-03 22:37:36
阅读次数:
198
死磕 java集合之TreeMap源码分析(一) 红黑树是什么?有什么特性? 它的时间复杂度是多少? 它跟SortedMap有什么区别和联系? 它的左旋、右旋是怎么玩的? ...
分类:
编程语言 时间:
2019-04-03 22:05:05
阅读次数:
163
本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。 总体介绍 Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过 ...
分类:
其他好文 时间:
2019-04-03 17:58:49
阅读次数:
162