红黑树介绍参考上一篇。 1. 基本定义 RBTNode是红黑树的节点类,而RBTree对应是红黑树的操作实现类。在RBTree中包含了根节点mRoot和红黑树的相关API。注意:(01) 在实现红黑树API的过程中,我重载了许多函数。重载的原因,一是因为有的API是内部接口,有的是外部接口;二是为了 ...
分类:
编程语言 时间:
2018-10-08 19:28:46
阅读次数:
146
[TOC] content HashMap 的数据结构: 数组 + 链表(Java7 之前包括 Java7) 数组 + 链表 + 红黑树(从 Java8 开始) PS:这里的《 "红黑树" 》与链表都是链式结构。 HashMap 内部维护了一个数组,数组中存放链表的链首或红黑树的树根。 当链表长度超 ...
分类:
其他好文 时间:
2018-10-07 16:48:10
阅读次数:
145
[TOC] 定义与性质 红黑树,是一种平衡的《 "二叉查找树" 》。 红黑树图示如下: 性质: 1. 结点要么是红的,要么是黑的。 1. 根结点是黑的。 1. 空结点是黑的。 1. 红色结点的两个儿子都是黑的。 1. 任一结点到空结点的每一条路径都包含相同数目的黑结点。 PS:空结点只是作为辅助使用 ...
分类:
其他好文 时间:
2018-10-07 01:11:09
阅读次数:
172
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字key,每个关键字只能在map中出现一次;第二个可能称为该关键字的值value)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。 这里说下map内部数据的组织,map内部自建一颗红黑树(一 ...
分类:
编程语言 时间:
2018-10-02 18:06:47
阅读次数:
219
Set集合总览 集合元素无序、不重复,三个实现类都是线程不安全的,最好在创建时通过Collections工具类的synchronizedSortedSet方法来包装Set集合,防止对set集合的意外非同步访问。 HashSet类 1. 底层数据结构是哈希表(是一个元素为链表的数组) 和红黑树,按Ha ...
分类:
其他好文 时间:
2018-09-29 21:29:08
阅读次数:
150
红黑树 动机 Q: 在已经有了AVL之类的BBST,为什么还需要引入红黑树? A: 我们希望数据结构具有关联性,即相邻版本之间,比如说第一次插入,和第二次插入时,树的结构不能发生太大变化, 应该可以经过O(1)次数就可以变化完成。 对于AVL树来说,插入是满足这个条件的,删除却不满足这个条件。 红黑 ...
分类:
其他好文 时间:
2018-09-28 20:44:52
阅读次数:
159
红黑树 https://www.cnblogs.com/wuqinglong/p/9709048.html 目录 概念 特征 旋转 左旋 左旋示例图 参考TreeMap的左旋代码 右旋 右旋示例图: 参考TreeMap的右旋代码: 寻找节点的后继 插入 情况1: 新节点(当前节点)为根节点 情况2: ...
分类:
其他好文 时间:
2018-09-28 16:31:44
阅读次数:
168
[TOC] 概念 1. 红黑树是一种自平衡的二叉查找树,是一种高效的查找树. 2. 红黑树具有良好的效率, 它可在O(logN)时间内完成查找,增加,删除等操作. 注意: 下文中, 非红色节点就是黑色节点, 即NULL节点是黑色节点 特征 1. 节点是红色或黑色. 2. 根节点是黑色. 3. 每个叶 ...
分类:
其他好文 时间:
2018-09-27 15:24:01
阅读次数:
247
1、如果不缺内存,如何使用一个具有库的语言来实现以后总排序算法和排序集合? 答:这个不同语言有不同的库函数排序C有qsort,java有sort排序,具体就不贴代码了。C++有实现排序的库函数:sort,该函数的实现是快速排序。另外C++的容器Map和set均可以实现排序。由于Map和set的实现是 ...
分类:
其他好文 时间:
2018-09-25 21:56:57
阅读次数:
260
1.C++ 多态 2. * c++ map 时间复杂度,如何实现 * map是红黑树实现的,查询复杂度为O(logn) * unordered_map是哈希表实现的,查询复杂度是O(1) * vector * 如何实现 * 如果插入n个数时间复杂度 * 4G内存能存多少vector 3. 虚函数的实 ...
分类:
编程语言 时间:
2018-09-24 23:15:50
阅读次数:
306