红黑树满足一下规则 1. 每个节点不是红色就是黑色 2.根节点为黑色 3.如果节点为红,其子节点必须为黑 4.任一节点至nil的任何路径,所包含的黑节点数必须相同。 5.叶子节点nil为黑色 当破坏了平衡时,在调整的时候需要用到左旋和右旋 左旋: 右旋: 代码实现: 1 void rb_tree:: ...
分类:
其他好文 时间:
2019-08-26 11:27:56
阅读次数:
64
关键字:修复双黑、插入修复、变色、旋转、nill、红黑 前言: 新添加的节点默认是红色的。 nil节点默认是黑色的。 自平衡方式--旋转 1、定义:节点是黑色或者红色,且满足以下五条性质的自平衡二叉树 性质: (1)性质1:节点是红色或黑色 (2)性质2:根节点是黑色的; (3)性质3:叶子节点是黑 ...
分类:
其他好文 时间:
2019-08-23 22:06:56
阅读次数:
104
set/multiset 的特性是所有元素会根据元素的值自动进行排序。set 是以 RB-tree(红黑树,平衡二叉树的一种)为底层机制,其查找效率非常好。set 容器中不允许重复元 素,multiset 允许重复元素。 set/multiset 的特性是所有元素会根据元素的值自动进行排序。set ...
分类:
编程语言 时间:
2019-05-25 21:25:41
阅读次数:
207
1. 如果插入一个node引起了树的不平衡,AVL和RB-Tree都是最多只需要2次旋转操作,即两者都是O(1);但是在删除node引起树的不平衡时,最坏情况下,AVL需要维护从被删node到root这条路径上所有node的平衡性,因此需要旋转的量级O(logN),而RB-Tree最多只需3次旋转, ...
分类:
其他好文 时间:
2019-05-14 13:20:20
阅读次数:
119
当插入元素9时,这时是需要调整的第一种情况,结果 如下: 插入9 红黑树规则4中强调不能有两个相邻的红色结点,所以此时我们需要对其进行调整。调整的原则有多个相关因素,这里的情况是,父结点10是其祖父结点1(父结点的父结点)的右孩子,当前结点9是其父结点10的左孩子,且没有叔叔结点(父结点的兄弟结点) ...
分类:
编程语言 时间:
2019-04-30 12:17:04
阅读次数:
131
红黑树具有很优秀的特性,其自平衡性特性,局部调整特性使得红黑树插入,删除,以查找,以及这些过程的内存资源的占用,的综合性能是非常高的(通常我们会拿红黑树和AVL树进行对比)。 对于红黑树的这些特性,在此不再赘述。我们在此讨论红黑树的插入,删除的过程。 先讨论插入过程: 1 插入节点为根结点,则红色变 ...
分类:
其他好文 时间:
2019-03-29 21:06:19
阅读次数:
265
E. Intersection of Permutations You are given two permutations a and b, both consisting of n elements. Permutation of nn elements is such a integer se ...
分类:
其他好文 时间:
2019-01-07 17:24:56
阅读次数:
157
STL系列之六 set与hash_set set和hash_set是STL中比较重要的容器,有必要对其进行深入了解。在STL中,set是以红黑树(RB-tree)作为底层数据结构的,hash_set是以Hash table(哈希表)作为底层数据结构的。set可以在时间复杂度为O(logN)情况下插入 ...
分类:
其他好文 时间:
2018-12-25 13:18:07
阅读次数:
141
红黑树(red-black tree 简称RB-tree)是BST的扩从结构。 Linux内核,STL中的关联容器,nginx的实现 三类索引 线性索引:有序数组,索引顺序文件 树形索引:二叉搜索树(BST) B/B+树,字典树 散列索引 BST的平衡问题 退化为线性结构O(n),不再是log n ...
分类:
其他好文 时间:
2018-07-13 19:06:03
阅读次数:
175
(splay_tree_tag没有比rb_tree_tag快) ...
分类:
其他好文 时间:
2018-04-16 12:10:05
阅读次数:
184