红黑树介绍参考上一篇。 1. 基本定义 RBTNode是红黑树的节点类,而RBTree对应是红黑树的操作实现类。在RBTree中包含了根节点mRoot和红黑树的相关API。注意:(01) 在实现红黑树API的过程中,我重载了许多函数。重载的原因,一是因为有的API是内部接口,有的是外部接口;二是为了 ...
分类:
编程语言 时间:
2018-10-08 19:28:46
阅读次数:
146
动态树有些类似 树链剖分+并查集 的思想,是用splay维护的 lct的根是动态的,"轻重链"也是动态的,所以并没有真正的轻重链 动态树的操作核心是把你要把 修改/询问/... 等等一系列的操作的树链放到一个splay里,然后用splay根据相对深度大小来维护这个树链 lct利用了splay的神奇性 ...
分类:
其他好文 时间:
2018-09-25 01:06:19
阅读次数:
151
二叉搜索树(Binary Search Tree),简称BST,顾名思义,一颗可以用于搜索的二叉树。BST在数据结构中占有很重要的地位,一些高级树结构都是其的变种,例如AVL树、红黑树等,因此理解BST对于后续树结构的学习有很好的作用。同时利用BST可以进行排序,称为二叉排序,也是很重要的一种思想。 ...
分类:
编程语言 时间:
2018-09-10 13:29:22
阅读次数:
194
一个二叉排序树的例子 首先看一个常见的二叉排序树的操作,下面的代码包括插入、创建和中序遍历。摘自 "这里" 。 我一直很纳闷为什么插入(创建)操作需要传递指针的指针,不是指针就可以操作被指向的内容吗?为解决这个疑惑,首先看一下C语言的函数传参。 C语言函数传参 一个经典的例子就是交换两个数的值, , ...
分类:
其他好文 时间:
2018-09-09 14:59:21
阅读次数:
523
"百度百科" Definition 在处理树上的链上修改与询问问题时,如果朴素地采用LCA的手段,那么询问的复杂度是$O(logn)$,但是修改的复杂度会成为朴素地$O(n)$,这在大部分题目中是难以接受的。用于处理树上两点间简单路径上权值和与单点子树权值和的修改以及其查询问题的数据结构与处理方法, ...
分类:
其他好文 时间:
2018-09-04 11:44:52
阅读次数:
190
红黑树是AVL树的另一变种,他也能在动态变化的过程中保持某种意义的平衡,对红黑树的操作最坏情况下也只有O(logN)的复杂度,而且下面我们会看到,对于插入而言我们有另外一种比AVL树更容易的实现方法,非递归的。在具体谈到技术细节之前,我们或许会有疑问:已经有AVL这种渐进复杂度很低的结构了,也能保持 ...
分类:
其他好文 时间:
2018-09-01 00:44:34
阅读次数:
405
2018-07-31 15:46:34 一、插入 Insert into a Binary Search Tree 问题描述: 问题求解: 二、删除 Delete Node in a BST 问题描述: 问题求解: ...
分类:
其他好文 时间:
2018-07-31 17:02:24
阅读次数:
135
【模板·II】树链剖分 学长给我讲树链剖分,然而我并没有听懂,还是自学有用……另外感谢一篇Blog +by 自为风月马前卒+ 一、算法简述 树链剖分可以将一棵普通的多叉树转为线段树计算,不但可以实现对一棵子树的操作,还可以实现对两点之间路径的操作,或是求 LCA(看起来很高级)。 其实树链剖分不算什 ...
分类:
其他好文 时间:
2018-07-26 22:06:08
阅读次数:
169
主席树: (不要管名字) 我们有的时候,会遇到很多种情况,对于每一种情况,都需要通过线段树的操作实现。 碰巧的是,相邻两种情况下的线段树的差异不大。(总体的差异次数是O(N)级别的,均摊就是O(常数)的了) 显然的是,我们不能对于每种情况都建造一棵线段树。n^n 空间直接MLE无疑。 救命稻草是:发 ...
分类:
其他好文 时间:
2018-07-25 22:06:26
阅读次数:
145
1.探索整个目录树kv:增删改查目录树==文件夹文件目录位置==一串字符串文件的绝对目录与相对目录几个系统命令:%cd文件目录位置%pwd目录树=文件夹importos#针对系统的模块,比如对目录树的操作test_path=r‘C:\study\jupyter‘os.listdir(test_path)#listdir显示目录列表[‘.ipynb_checkpoints‘,‘21点.ipynb‘,
分类:
其他好文 时间:
2018-07-05 19:45:30
阅读次数:
257