TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成TreeMap)。 今天有个需求,就是要根据treeMap中的v ...
分类:
编程语言 时间:
2016-12-31 23:51:42
阅读次数:
215
所谓双列集合就是存在映射关系并且是成对存在的。 双列集合体系: | Map 如果是实现了Map接口的集合类,具备的特点: 存储的数据都是以键值对的形式存在的,键不可重复,值可以重复。 | HashMap 底层也是基于哈希表实现 的。 | TreeMap TreeMap也是基于红黑树(二叉树)数据结构 ...
分类:
其他好文 时间:
2016-12-31 16:52:25
阅读次数:
304
TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成TreeMap)。 今天有个需求,就是要根据treeMap中的v ...
分类:
编程语言 时间:
2016-12-28 02:06:38
阅读次数:
221
红黑树本身就是一颗二叉查找树, 因此红黑树的插入操作和二叉查找树的插入操作都是一样的,这个不难.但是红黑树插入节点完成后, 可能会破坏红黑树的特性, 为了保持红黑树的性质, 需要通过一系列操作来保持红黑树的性质. 既然说会破坏红黑树的性质, 那红黑树到底有什么性质呢? 红黑树有五个性质: 刚才说节点 ...
分类:
其他好文 时间:
2016-12-23 13:35:58
阅读次数:
140
红黑树又称红-黑二叉树,它首先是一颗二叉树,它具体二叉树所有的特性。同时红黑树更是一颗自平衡的排序二叉树。我们知道一颗基本的二叉树他们都需要满足一个基本性质–即树中的任何节点的值大于它的左子节点,且小于它的右子节点。按照这个基本性质使得树的检索效率大大提高。我们知道在生成二叉树的过程是非常容易失衡的 ...
分类:
其他好文 时间:
2016-12-22 10:51:40
阅读次数:
199
红黑树的五个性质: 1)每个结点要么是红的,要么是黑的。 2)根结点是黑的。 3)每个叶结点,即空结点(NIL)是黑的。 4)如果一个结点是红的,那么它的俩个儿子都是黑的。 5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。 红黑树插入的几种情况: 1、树是空的,直接将节点设置为 ...
分类:
其他好文 时间:
2016-12-11 12:24:15
阅读次数:
240
应该可以看出来最后一个编码量最小。。但是对于中间不存在映射关系的元素我们可以用其他标志来特判没有。。 不要自己硬数。。。费眼费力啊。。这个题好像小写字母和0是非法的。。所以我们可以用来特判 但是最后一个存法会慢一些?线性的嘛。。 map和vector应该会快一些。。毕竟是红黑树和块状链表。。但是这个 ...
分类:
其他好文 时间:
2016-12-10 22:46:00
阅读次数:
198
Atitit 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树 attilax理解与总结 1.1. 树形结构-- 一对多的关系1 1.2. 树的相关术语: 1 1.3. 常见的树形结构 红黑树 二叉树 B树 B+树 Trie树2 1.4. 满二叉树和完全二叉树。。完全二叉树说明深度达到完全了 ...
分类:
其他好文 时间:
2016-12-02 02:32:37
阅读次数:
209
1、set的基本操作(1)、set的删除、插入操作代码如下:#include<iostream>
#include<set>
usingnamespacestd;
//set底层是红黑树,其所包含的元素是唯一的,集合中的元素按一定的顺序排列,元素插入过程是按排序规则插入,所>
以不能指定插入位置;
intmain(void){
/..
分类:
其他好文 时间:
2016-11-22 23:59:23
阅读次数:
420
2-3-4树是一种阶为4的B树。它是一种自平衡的数据结构,可以在O(lgn)的时间内查找、插入和删除,这里的n是树中元素的数目。2-3-4树和红黑树是等价的,也就是每个红黑树都可以转化为一颗2-3-4...
分类:
其他好文 时间:
2016-11-21 11:18:51
阅读次数:
152