纸上得来终觉浅,绝知此事要躬行
--陆游 问渠那得清如许,为有源头活水来 --朱熹
TreeMap与Map的关系如下图:
TreeMap介绍:
(1)TreeMap是一个有序的key-value集合,是通过红黑树来实现的。
(2)TreeMap是继承于AbstractMap,所以他是一个Map,是一个key-value集合。
(3)TreeMap实现...
分类:
编程语言 时间:
2015-08-29 00:49:30
阅读次数:
249
set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值;另外,还得保证根节点左子树的高度与右子树高度相等。平衡二叉检索树使用中序遍历算法,检索效率高于vector、...
分类:
编程语言 时间:
2015-08-25 21:14:24
阅读次数:
191
红黑树的特性: 1.红黑树是一棵二叉搜索树。 2.树上的每个结点或为红,或为黑。 3.如果一个结点为红色,那么它的左右子结点一定为黑色。 4.从根结点到每个叶子结点路径中经过的黑色结点数是相同的。 5.根结点必须是黑色。 理解这些特性是很重要的。正是因为有这些特性,才保证了红黑树的高效。...
分类:
其他好文 时间:
2015-08-25 21:04:59
阅读次数:
214
红黑树的实现还真不简单,各种染色旋转足足折腾了笔者几天。。 ????不过收获也是巨大的。笔者现在终于明白为啥二叉搜索树这么重要了,确实很有用。 ????下面上代码。 ????细心的朋友可能会觉...
分类:
编程语言 时间:
2015-08-21 21:44:19
阅读次数:
352
红黑树的插入和遍历时间复杂度分析
在平常的工作中,最常用的一种数据结构恐怕是std::map了。因此对其的时间复杂度分析是有必要的,编写程序时做到心中有底。
一、理论分析
在stl中std::map和std::set都采用红黑树的方式实现。我们知道插入一个元素到红黑树的时间为log(N),其中N为当前红黑树的元素个数,因此,采用插入方式构建元素个数...
分类:
其他好文 时间:
2015-08-20 13:19:39
阅读次数:
780
1,B树的基本介绍①B树,相比于二叉树、红黑树而言,它的特点就是树的高度比其他类型的树要低很多。如何做到低呢?B树中的每个结点的分支数目非常大,即每个结点有很多很多孩子结点。这样,在相同结点数目情况下,B树就比其他树的高度低了。②B树,是针对磁盘(外存)而设计的数据结构。由于内存有限,巨大量的数据还...
分类:
其他好文 时间:
2015-08-19 12:39:20
阅读次数:
137
map容器
map所处理的数据与数据库表具有键值的记录很相似,在键值与映射数据之间,建立一个数学上的映射关系。map容器的数据结构仍然采用红黑树进行管理,插入的元素键值不允许重复,所使用的结点元素的比较函数只对元素的键值进行比较,元素的各项数据可以通过键值检索出来。对于键值和映射数据,可以通过pair封装成一个结构对象,map要做的就是将这个pair对象插入到红黑树中,同时也需要提供一个仅使用键...
分类:
其他好文 时间:
2015-08-18 16:31:21
阅读次数:
150
#include#include#include#include#include#define RED 1#define BLACK 0using namespace std;struct node{ int color; int key; node* left; node* right; node...
分类:
其他好文 时间:
2015-08-18 13:56:29
阅读次数:
150
前言:本文章来源于我在知乎上回答的一个问题
AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中?
看完后您可能会了解到这些数据结构大致的原理及为什么用在这些场景,文章并不涉及具体操作(如插入删除等等)
目录
AVL树
AVL树原理与应用
红黑树
红黑树原理与应用
B/B+树
B/B+树原理与应用
Trie树
Trie树原理与应用
AVL树
简介:
AV...
分类:
其他好文 时间:
2015-08-17 23:38:16
阅读次数:
361
关于红黑树的插入:红黑树并没有我们想象的那么难(上)关于红黑树的删除:红黑树插入删除关于红黑树的源码剖析:红黑树C源码实现与剖析
分类:
其他好文 时间:
2015-08-16 22:59:14
阅读次数:
148