##红黑树的来历 红黑树(Cormen, 2001)是一个平衡二叉树的高效实现。 是一种特殊的二叉查找树,自平衡二叉查找树,为了防止二叉查找树退化成链表的情况。 相对于AVL树(完美平衡二叉树),是一种平衡二叉树,它追求极致的平衡。 ##二叉查找树定义 根节点左边的值都小于根节点的值,右边的值都大于 ...
分类:
其他好文 时间:
2020-07-06 13:20:25
阅读次数:
74
##目录 树 二叉树 二叉树的遍历 总结 参考资料 序 树是学习数据结构的时候非常重要的一个数据结构,尤其是二叉树更为重要。像Java的HashMap 就使用了红黑树,而Mysql的索引就使用到了B+树。恰好最近刷leetcode碰到了不少的有关 二叉树的题目,今天想着写个总结。 1. 树 1.1 ...
分类:
其他好文 时间:
2020-07-04 21:02:58
阅读次数:
61
HashMap 底层是如何实现的?在 JDK 1.8 中它都做了哪些优化? 在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的组成结构如下图所示: 数组中的元素我们称 ...
分类:
其他好文 时间:
2020-07-04 18:34:35
阅读次数:
44
1. MySQL索引引擎有两种:Innodb:聚集索引;Myisam:非聚集索引 2. MySQL 为什么不使用hash、二叉树、红黑树等作为索引的数据结构,而采用 B+ 树? 因为hash、二叉树、红黑树的高度不可控,B+ 树的高度可控,mysql 一般是3~5层。 3. 多路平衡二叉树(B+树) ...
分类:
数据库 时间:
2020-07-04 13:39:38
阅读次数:
67
1.SkipList Redis的sortedSet数据结构是有序不重复的(索引为唯一的,数据(score)却可以重复), 跳表是redis的一个核心组件,也同时被广泛地运用到了各种缓存地实现当中,它的主要优点, 就是可以跟红黑树、AVL等平衡树一样,做到比较稳定地插入、查询与删除。理论插入查询删除 ...
分类:
其他好文 时间:
2020-07-02 16:23:09
阅读次数:
41
红黑树(Red Black Tree)是一种自平衡的二叉搜索树(Self-balancing Binary Search Tree)。以前也叫做平衡二叉 B 树(Symmetric Binary B-tree)。 预备知识 树的知识框架结构如下图所示: 平衡二叉搜索树 平衡二叉搜索树(Balance ...
分类:
其他好文 时间:
2020-06-28 20:52:04
阅读次数:
53
前言基于mysqlSELECT ORDER BY加索引加缓存借助redis实时排行榜实现原理为什么 Redis 要用跳表来实现有序集合,而不是红黑树?参考TOC 前言 排行榜几乎已经成为互联网应用中的必备模块,特别是游戏领域,它是对某一相关同类事物的客观实力的反映,带有相互之间的比较性质,带有竞争意... ...
分类:
其他好文 时间:
2020-06-28 00:04:18
阅读次数:
124
map字典存放键值对 内部组成是红黑树 查找 删除 插入复杂度为O(logn) 初始化方式 map<int,string> str; 插入方式 1.使用pair map<int ,string>str; str.insert(pair<int, string>(1, "one")); 2.value ...
分类:
编程语言 时间:
2020-06-27 20:10:09
阅读次数:
73
关于C++-STL-set的常用函数和方法 set模板类在头文件 中使用前需要先引入头文件。 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个树根节点的键值大于左子树所有节点的键值,而小于 ...
分类:
编程语言 时间:
2020-06-25 11:37:33
阅读次数:
71
1:HashMap 的数据结构? A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>[] table; 2:HashMap 的工作原理? HashMap 底层是 hash 数组和单向链表实现,数组中的每个 ...
分类:
其他好文 时间:
2020-06-24 15:48:49
阅读次数:
48