树
文章平均质量分 85
icpc-树
yichudu
code anything
展开
-
树的左旋与右旋
下图所示操作称为对结点Q的右旋,对结点P的左旋。二者互为逆操作。#includeclass BinTree{private: typedef struct node{ int data; node*lchild,*rchild,*parent; }*tree; tree root;public: void right_rotate(node原创 2014-10-09 16:47:27 · 4672 阅读 · 0 评论 -
红黑树代码实现
红黑树简介myBlog:http://blog.csdn.net/chuchus/article/details/22824239Wikipedia: http://zh.wikipedia.org/wiki/%E7%BA%A2%E9%BB%91%E6%A0%91//Black Red Tree//written by cc who consults Wikipedia and m原创 2014-10-11 14:33:59 · 1232 阅读 · 0 评论 -
二叉搜索、 B- 、B+、 红黑 、AVL 树
B-树 M阶B-树是一种多路平衡搜索树(并不是二叉的): 根结点的儿子数为[2, M]; 除根结点以外的非叶子结点的儿子数为[M/2, M]; 所有叶结点都为空且位于同一层; 若一个非叶结点有n个孩子,那么它有n-1个关键字,结构见下:n-1 P0 K1 P1 K2 P2 ... Kn-1 Pn-1 表一:非叶结点存放的数据 K[1], K[2], …, K[n-1]为非叶子结点的关键字且K[i] < K[i+1]; P[i]为指向孩子节点的指针。其中P[i-1]原创 2014-04-02 21:27:01 · 1996 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树的非递归遍历原创 2014-04-04 18:07:56 · 1299 阅读 · 0 评论 -
lucene 范围查询及其原理
适用于lucene 6.0。Int类型的有IntPoint,Double类型的有相应的DoublePoint,以此类推。1.相关类org.apache.lucene.document.IntPoint一个被索引的int类型的field。可以代表n维形状,可以范围搜索。org.apache.lucene.document.IntPoint.IntPoint(String name原创 2016-07-12 11:32:57 · 4788 阅读 · 1 评论 -
二叉树 总述(性质,定义, BFS,DFS遍历)
树中结点的值代表该结点权重。从根到任意结点的路径长度(即经过的边数)与该结点权重之积为该结点的带权路径长度。树的带权路径长度,WPL,WeightedPathLengthofTree。表示树中所有叶结点的带权路径长度之和。最优二叉树也称为哈夫曼树。表示带权路径长度最小的二叉树。原创 2014-08-31 10:40:52 · 1137 阅读 · 1 评论 -
左偏树,原理及模板
1.定义左偏树,leftist tree。首先是一个堆,即 node&& node对于树中任意一个节点,左孩子的distance >= 右孩子的distance。1.1 节点的distance将当前树补全为扩展二叉树。当前节点到最近的叶子节点的距离即为该节点的distance,维基百科中叫s-value。1.2 用途可以用作优先队列。一般的堆,希望尽量平衡,这样原创 2017-01-06 10:22:01 · 633 阅读 · 0 评论 -
左偏树-HDOJ-1512-Monkey King
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1512题目大意有一群猴子,每只猴子都有力量值,不认识的猴子之间可能发生争吵。初始时大家互相不认识(只认识自己)。如果有两只不认识的猴子发生了争吵,那么他们会从各自的朋友圈里找出力量最强的猴子来格斗,格斗结束后,格斗的两只猴子力量值减半,两个猴子的朋友圈合并。输出决斗完成后,新合并的朋友圈最强原创 2017-01-06 11:03:28 · 444 阅读 · 0 评论 -
并查集 原理及模板
并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。const int MAX_M = 1E8;unionFindSet[MAX_M];struct UnionFindSet { static void init() { for (int i = 0; i < MAX_N; i++) unionFindSet[i] =原创 2014-02-23 18:46:14 · 909 阅读 · 0 评论 -
树形DP-POJ-2342-Anniversary party
POJ 链接: http://poj.org/problem?id=2342HODJ 链接 : http://acm.hdu.edu.cn/showproblem.php?pid=1520不得不吐槽,HDOJ不止java会超时,C++也会超时,非要scanf这种低级写法,有意思么?1.题目大意某大学举办年会, 请职员们参会. 每个人都有一个活跃值(逗逼属性值), 职工之间具有层级关原创 2017-01-23 17:52:45 · 643 阅读 · 0 评论 -
字典树-模板
//字典树-模板#include#include#include#include#includeusing namespace std;#define N 26#define Offset 'a'typedef struct TrieNode{ bool isword; TrieNode *next[N]; TrieNode(){ this->isword =原创 2014-11-12 14:34:57 · 824 阅读 · 0 评论 -
字典树-HDOJ-1247-Hat’s Words
Hat’s WordsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8482 Accepted Submission(s): 3053Problem DescriptionA hat’s word i原创 2014-11-12 14:02:04 · 1171 阅读 · 2 评论 -
字典树-HDOJ-1671
Phone ListTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 11016 Accepted Submission(s): 3805Problem DescriptionGiven a list o原创 2014-11-11 15:40:54 · 1042 阅读 · 0 评论 -
线索二叉树及相关函数
n个结点的二叉链表中含有n+1(2n-(n-1)=n+1)个空指针域。利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前趋和后继结点的指针(这种附加的指针称为"线索")。//线索二叉树及函数 #include using namespace std;struct node{ int data; node* lchild,*rchild; bool is_thre原创 2014-04-02 20:45:50 · 1379 阅读 · 0 评论 -
二叉树的镜像-jobdu-1521
输入一个二叉树,输出其镜像。原创 2014-04-09 21:56:17 · 1221 阅读 · 0 评论 -
线段树-区间延迟修改-zoj-1610
大意:为线段上的子线段涂不同颜色的色块,新涂的会覆盖掉旧的。对应于涂色过程的输入为每行三个整数 x1 x2 c ,代表线段中本次涂色的子线段的起点与终点。问到最后每种颜色各有多少块。分析:将整个线段分割成单位长度为1的子线段。以数组color[i]表示(i,i+1)区间上的色块颜色(从0开始记)。每次涂色,都要修改一个区间,所以用线段树来维护区间信息。原创 2014-05-15 21:58:46 · 1022 阅读 · 0 评论 -
线段树-点修改-hdoj-1754
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input原创 2014-05-16 10:51:45 · 1423 阅读 · 0 评论 -
字典树-百度之星-Xor Sum
分析:暴力要超时,所以把每个数字转换为长度为32的0-1字符串,用字典树。因为其公共前缀的特性,空间上可以承受。因为是二叉树,用node[SIZE][2]存放。不知道new速度是否会慢很多,所以没用指针。原创 2014-05-17 10:41:31 · 2687 阅读 · 8 评论 -
线段树-poj-2823
大意:给出数组a,内容为 a1 a2 a3 ... an。再给一个常数k。从i=1起,计算ai、a i+1、...、a i+k-1区间内的最小值和最大值。线段树咯。原创 2014-05-12 22:47:44 · 1101 阅读 · 0 评论 -
堆排序+代码实现
堆排序堆,heap,是二叉树的一种。小根堆有这样的性质——任意一个结点的值比它的左右孩子都要小。排序思想将待排元素看作是完全二叉树,物理上用一维数组存储。实现堆排序需要解决两个问题:1.如何将杂乱的完全二叉树初始化为一个堆?答:从最后一个非叶结点起,将该节点当做根,自上而下进行调整,使之成为一个堆。然后依次对倒数第二个、倒数第三个、直至正数第一个结点进行此操作。2.输出原创 2014-09-08 21:54:02 · 2651 阅读 · 0 评论 -
K-D 树, 高维空间索引
简介K-D Tree, K-Dimensional Tree, 对高维的点作空间划分的一种二叉树.传统的文本搜索是这样的: 一个doc 有若干个field, 分词后添加到倒排索引中, 然后按照 tf-idf 等思想计算match(query,doc), 然后取得分最高的top-k.那么对于高维的点或向量 v=(x1,...,xd)v=(x_1, ... , x_d), 即给出一个集合 S={v|原创 2017-09-28 10:46:19 · 1301 阅读 · 0 评论