红黑树,顾名思义,就是把平衡二叉搜索树的节点赋予两种颜色,通过定义几条规则,达到约束的目的。红黑树可以保证,每次插入删除操作后的重平衡,全树拓扑结构的改变仅需要常数个节点,最坏情况下需要对logn个节点重染色,但是就分摊意义仍然为O(1)。 需要满足的条件: (1)树根始终为黑色 (2)外部节点均为 ...
分类:
其他好文 时间:
2017-08-03 18:08:36
阅读次数:
156
一、迭代器的变化 和vector、list不同,set、map都是关联式容器。set内部是基于红黑树实现的。插入和删除操作效率较高,因为只需要修改相关指针而不用进行数据的移动。 在进行数据删除操作后,迭代器会不会失效呢?删除set的数据时,实际的操作是删除红黑树中的一个节点,然后相关指针做相关调整。 ...
分类:
编程语言 时间:
2017-08-03 01:06:55
阅读次数:
157
前言 红黑树是工程中最常用到的一种自平衡二叉排序树,其和AVL树类似,都是在进行插入、删除时通过一定的调整操作来维持相对稳定的树高,从而获得较好的查询性能。 性质 1. 节点是红色或黑色。 2. 根节点是黑色。 3 每个叶节点(null节点)是黑色的。 4 每个红色节点的两个子节点都是黑色。(从每个 ...
分类:
编程语言 时间:
2017-07-27 23:36:39
阅读次数:
257
#include #include #include #include using namespace std; typedef struct itemstruct{ int a; char b[20]; }itemS; itemS s[4]={{98,"what"}, {88, "hello"},... ...
分类:
其他好文 时间:
2017-07-23 16:32:57
阅读次数:
141
set和multiset会根据特定的排序准则自动将元素排序,set中元素不允许重复,multiset可以重复。// 2017/7/23号 好像set容器里面只能装一个元素#include #include using namespace std; //set插入元素操作 int main() { /... ...
分类:
其他好文 时间:
2017-07-23 15:22:09
阅读次数:
141
二次联通门 : luogu P3369 【模板】普通平衡树(Treap/SBT) 近几天闲来无事。。。就把各种平衡树都写了一下。。。 下面是红黑树(Red Black Tree) ...
分类:
其他好文 时间:
2017-07-22 21:06:13
阅读次数:
201
与set集合容器一样,multiset多重集合容器也使用红黑树组织元素数据,仅仅是multiset容器同意将反复的元素健值插入。而set容器则不同意。 set容器所使用的C++标准头文件set。事实上也是multiset容器的头文件。由于这个set头文件也包括multiset所需的红黑树和自身实现文 ...
分类:
其他好文 时间:
2017-07-18 19:43:21
阅读次数:
138
可以毫不夸张的说,HashMap是容器类中用的最频繁的一个,而Java也对它进行优化,在jdk1.7及以前,当将相同Hash值的对象以key的身份放到HashMap中,HashMap的性能将由O(1)下降到O(N),所以jdk1.8将相同Hash值的key以红黑树的形式进行存储。 一、简单理解 1. ...
分类:
其他好文 时间:
2017-07-18 00:12:44
阅读次数:
146
概述:本文从排序二叉树作为引子,讲解了红黑树,最后把红黑树和AVL树做了一个比较全面的对比。 1 排序二叉树 排序二叉树是一种特殊结构的二叉树,可以非常方便地对树中所有节点进行排序和检索。 排序二叉树要么是一棵空二叉树,要么是具有下列性质的二叉树: ? 若它的左子树不空,则左子树上所有节点的值均小于 ...
分类:
其他好文 时间:
2017-07-16 15:46:29
阅读次数:
212