- 博客(11)
- 收藏
- 关注
原创 红黑树 学习笔记4 - 删除
接上,算法导论13.4 删除与 nnn 个节点的红黑树上的其它基本操作一样,删除一个结点要花费 O(logn)O(logn)O(logn) 时间。与插入操作相比,删除操作要稍微复杂一些。 \quad \quad 首先来完成一些辅助程序。 \quad RB-TRANSPLANT( T,u,vT,u,vT,u,v ) 把以 uuu 为根的子树 替换为 以 vvv 为根的子树。 \q...
2018-03-31 23:48:46 148
原创 2018-3-31 关于最近某些工作的感想
最近两周的某一项工作就是把 线段树 不断地抽象,然后封装起来,并且逐步引入新的模式来提高效率。 这里稍作总结。 \quad \quad 一开始的版本: https://blog.csdn.net/rsy56640/article/details/79342325 \quad 没有泛型,不支持函数设置,只有区间求和查询,还有单点值修改的操作。 \quad \quad 稍微调...
2018-03-31 17:18:09 131
原创 红黑树 学习笔记3 - 插入
接上,算法导论13.3 插入结论:我们可以在 O(logn)O(logn)O(logn) 时间内完成一棵含 nnn 个结点的红黑树中插入一个新结点。将结点 zzz 插入树 TTT 大致做法: \quad 1. 首先像一棵普通的 BST 一样,确定 zzz 在树 TTT 中的位置。 \quad 2. 然后将 zzz 着为红色。 \quad 3. 为了保证红黑树性质能继续保持,我们调用一...
2018-03-24 12:53:29 231
原创 RB_Tree 项目启动
目前的想法是: 1.理论看算法导论, 2.然后实践 \quad \quad i) 按照STL源码剖析来写, \quad \quad ii) 之后如果有时间再按照自己的风格写一个版本。。不过现在遇到了一些困难, 算导和STL上很多实现手法是不一样的,搞得我有点懵逼。。比如NIL 还有比如Alloc,还有iterator之类的目前还没搞出来。。 现在都有点想同时写两个版本了...
2018-03-24 10:55:59 138
原创 STL源码剖析 之 红黑树 - 1
做了一点微小的工作。github链接: https://github.com/rsy56640/rsy_little_lib/tree/master/library_for_algorithm/RB_Tree/RB_Tree_1本来想按照自己的风格写的,但是还是学习一下type_traits,Alloc等玩意吧。。 感觉就是把SGI-STL-2.91.57临摹了一遍, 不过有个地方很...
2018-03-22 11:07:42 163
原创 红黑树 学习笔记2 - 旋转
接上, 算法导论 13.2 旋转当在某个结点 xxx 上做 左旋 时,假设它的右孩子是 yyy 而不是 T.NILT.NILT.NIL ; xxx 可以为其右孩子不是 T.NILT.NILT.NIL 结点的树内任意结点。左旋以 x 到 y 的链为”支轴”进行。它使 y 成为该子树新的根结点,xxx 成为 yyy 的左孩子,yyy 的左孩子成为 xxx 的右孩子。pseudocode ...
2018-03-21 23:29:20 168
原创 红黑树 学习笔记1 - 基本性质
本系列为算法导论 第13章 红黑树 学习笔记RB_Tree是一颗BST,满足: 1. 结点颜色为红或黑。 2. 根结点为黑色。 3. 每个叶结 (NIL) 点是黑色。 4. 不存在2个连续的红色结点 5. 对于任一结点,从该结点到其所有后代叶结点的简单路径上,均包含相同数目的黑色结点。先做一些人为的约定: \quad 树根的高度为1; \quad 叶结点指的是 NILNILN...
2018-03-21 22:33:15 275
原创 POJ 3368 Frequent values - (线段树)
题目链接:http://poj.org/problem?id=3368 题目大意:不减数列,求出区间内频率最大数的频率。 思路:把相同的数合并,保留频率,放到线段树里面,求max; 对于给出的区间,先把两头去掉,再对中间部分用线段树查询max。 (有点边界还是略复杂的,比如给出的区间属于同一个区间,或者相邻区间)#include <stdio.h> #include...
2018-03-19 21:17:27 193 1
原创 POJ 3264 Balanced Lineup - (RMQ)
题目链接:http://poj.org/problem?id=3264RMQ水题#include <stdio.h> #include <vector> #include <algorithm>using namespace std;//POJ 3264 Balanced Lineupclass SegmentTree { ...
2018-03-19 19:03:49 207
原创 树状数组模板(水)
最终版本: 2018-3-12 树状数组比线段树简单,但是由于是Abel群,所以可以做一些优化工作, 最后写起来比线段树多一些吧。 树状数组模板库: https://github.com/rsy56640/rsy_little_lib/tree/master/library_for_algorithm/Binary_Indexed_Tree 线段树模板库: https://github...
2018-03-10 16:38:50 149
原创 Principle of Compiling first assignment Cpp version
作业描述: 支持2种操作: 1. 赋值 a = 4.0; b= a* 2.2; 2. 打印 print(a); print(b-7);(突然意识到自己写的好像是 跳转表 的实现,不过人家用的是goto,我是标记一下然后continue)2018-3-11https://github.com/rsy56640/Assignment-in-WHUISS/tre...
2018-03-10 11:20:43 168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人