日常工作中,被同事突然问到的一个问题,hashmap是我们JAVA程序中使用频率非常高的key-value键值对形式的数据类型 结论是目前能触发转化的两个条件是:一个是链表的长度达到8个,一个是数组的长度达到64个 为什么要触发这个转换,目前官方的解释: Because TreeNodes are ...
分类:
其他好文 时间:
2020-01-27 12:24:22
阅读次数:
368
FHQ Treap,又名无旋Treap,是一种不需要旋转的平衡树,是范浩强基于Treap发明的。FHQ Treap具有代码短,易理解,速度快的优点。(当然跟红黑树比一下就是……)至少它在OI中算是很优秀的数据结构了。 ...
分类:
其他好文 时间:
2020-01-26 22:36:22
阅读次数:
77
学习过2 3树之后就知道应怎样去理解红黑树了,如果直接看「算法导论」里的红黑树的性质,是看不出所以然。我们也看看一颗二分搜索树满足红黑的性质: 1.每个节点或是红色的,或是黑色的; 2.根节点是黑色的; 3.每个叶子节点(NIL)是黑色的; 4.如果一个节点是红色的,则它的两个子节点都是黑色的; 5 ...
分类:
其他好文 时间:
2020-01-26 16:04:47
阅读次数:
92
画了一系列树的动画,从二分搜索树,到AVL树,再到2 3树,再到基于2 3树的红黑树,都可以发现这些树都跟二叉查找树很像啊。 嘿嘿!二分搜索树就是二叉查找树;AVL树也是一颗二分搜索树,只多了高度差的限制;2 3树虽满足二分搜索树的性质,但不是一颗二分搜索树,2 3树由2 节点和3 节点组成的,满足 ...
分类:
其他好文 时间:
2020-01-26 14:34:42
阅读次数:
96
1,双列集合,一个元素包含两个值(key value) 2,两个值的元素可以相同,也可以不同 3,key值不允许重复,value可以重复 4,key value 一一对应 HashMap特点:1.集合底层是哈希表 java1.8之前:数组+单向链表 1.8之后:数组+单向链表/红黑树(当链表长度超过 ...
分类:
其他好文 时间:
2020-01-26 00:57:30
阅读次数:
106
红黑树是一种自平衡的二叉查找树 它具有以下5个性质: 1、节点颜色必须是红色或者黑色 2、根节点是黑色 3、每个叶子节点(NIL节点、空节点)是黑色的 4、每个红色节点的两个子节点都是黑色 5、从任一节点到每个叶子的所有路径都包含数目相同的黑色节点 假设我们插入这些数据:12 23 34 40 45 ...
分类:
其他好文 时间:
2020-01-24 17:18:32
阅读次数:
69
二分搜索树是为了快速查找而生,它是一颗二叉树,每一个节点只有一个元素(值或键值对),左子树所有节点的值均小于父节点的值,右子树所有的值均大于父节点的值,左右子树也是一颗二分搜索树,而且没有键值相等的节点。它的查找、插入和删除的时间复杂度都与树高成比例,期望值是O(log n)。 但是插入数组如[], ...
分类:
其他好文 时间:
2020-01-23 14:00:42
阅读次数:
81
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上 ...
分类:
其他好文 时间:
2020-01-23 11:08:49
阅读次数:
79
红黑树相信经过面试官折磨的人都不会太陌生,作为数据结构中较复杂都一种,一直是面试中面试官常用的虐杀手段。废话不多说,直接进入正题。 在了解红黑树之前,先要了解二叉查找数,又叫二叉树。二叉树顾名思义,是一种每个节点最多有两个子节点都树,同时遵循 左节点的值<父节点的值<右节点的值 这样的规律,如下图所 ...
分类:
编程语言 时间:
2020-01-22 16:11:05
阅读次数:
74
```C++map与unordered_map的区别《此内容来源于https://www.cnblogs.com/strawqqhat/p/10602515.html》1、需要引入的头文件不同map:#includeunordered_map:#include2、内部实现机理不同map:map内部实... ...
分类:
其他好文 时间:
2020-01-21 10:56:16
阅读次数:
88