![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
文章平均质量分 91
Enstein_Jun
与其等待未来,不如创造未来
展开
-
二叉树重建 - (先序遍历、中序遍历、后序遍历)
对于一棵二叉树T,我们可以递归定义它的先序遍历,中序遍历,后序遍历: 1、先序遍历 ( PreOrder(T) = T的根节点 + PreOrder(T的左子树) + PreOrder(T的右子树) ) 2、中序遍历 ( InOrder(T) = InOrder(T的左子树) + T的根节点 + InOrder(T的右子树) ) 3、后原创 2015-04-23 09:45:35 · 3261 阅读 · 0 评论 -
线段树区间更新
在此我们之前学习了线段树的单点更新(点我)。但是现在我们遇到一个这样的问题:给出一个n个元素的数组A1,A2,...,An。我们总共进行m次操作。每次操作为下列两种操作其中一种:1、Add(L, R, v): 将A(L), A(L+1),...,A(R)的值全部增加v。2、Query(L, R): 计算子序列A(L), A(L+1),...,A(R)的元素和,最小值和最大值。注意:A(L原创 2016-04-11 20:24:54 · 3356 阅读 · 0 评论 -
划分树
对于区间第k大值,除了我们之前介绍的归并树之外。现在要登场的数据结构将比归并树的效率更高,他就是划分树。我们学习归并树的时候了解到:归并树 = 线段树 + 归并排序。那么我们今天要介绍的划分树就是:线段树 + 快排。要说有什么不同的,那就是归并树是从有序到无序,而划分树是从无序到有序。1、划分树的定义 给定一序列a[1...n],sorted[1...n]为序列从小到大的排列原创 2016-04-26 21:18:09 · 3699 阅读 · 3 评论 -
数据结构 -- 并查集
1、什么是并查集 并查集是一种用于管理分组的数据结构。它具备两个操作:(1)查询元素a和元素b是否为同一组 (2) 将元素a和b合并为同一组。注意:并查集不能将在同一组的元素拆分为两组。2、并查集的结构 并查集可以使用树来实现。原创 2015-08-10 06:46:02 · 21498 阅读 · 3 评论 -
线段树入门总结
线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,因此有时需要离散化让空间压缩。原创 2015-04-28 09:59:58 · 3208 阅读 · 1 评论 -
二叉搜索树(Binary Search Tree)
1、什么是二叉搜索树 二叉搜索树(Binary Search Tree)是一棵有序的二叉树,所以我们也可以称它为二叉排序树(不知道二叉树的童鞋,先看看二叉树:传送门)。具有以下性质的二叉树我们称之为二叉搜索树:若它的左子树不为空,那么左子树上的所有值均小于它的根节点;若它的右子树不为空,那么右子树上所有值均大于它的根节点。它的左子树和右子树分别也为二叉搜索树。2、二叉搜索树的结原创 2015-08-10 06:50:06 · 2011 阅读 · 0 评论 -
STL 之 优先队列(priority_queue)
1、什么是优先队列 能够完成下列两种操作的数据结构,我们便称之为优先队列。 ①插入一个数值 ②取出最大(或者最小)的数值(获取数值,并且删除)。 从严格意义上来说优先队列,并不是队列,因为它并不遵循队列的FIFO(先进先出的原则)。2、实现优先队列 我们可以使用一种叫做“堆(heap)”的数据结构来实现优先队列。堆有一个重要的原创 2015-08-10 06:48:29 · 11784 阅读 · 1 评论 -
【第六届山东省ACM竞赛】B题 Lowest Unique Price(SDUT3252)
题目链接:Here 这一题是我今年省赛最大的遗憾啊。诶。。。想想就觉得伤心啊。这一题其实不难,但是比赛时,我已经先到了怎么做,但是由于鄙人的失误,结果导致我们队后两个小时的时间都耗在那里了。越想越觉得可惜啊。我们现在看看这题的思路吧。 这一题,貌似大多人都是有STL的set做的。其实,这一题可以用线段树做(不知道线段树的童鞋请移步:这里),而且还是简单的单点更新问题原创 2015-05-22 07:15:03 · 2092 阅读 · 4 评论 -
字典树(Trie)
字典树:又称为Trie,是一种用于快速检索的多叉树结构。Trie把要查找的关键词看作一个字符序列,并根据构成关键词字符的先后顺序构造用于检索的树结构;一棵m度的Trie树或者为空,或者由m棵m度的Trie树构成。注意:和二叉查找树不同的是,其节点并非存储一个元素。优点:1、利用公共内存,以达到节约内存的目的 2、根节点只存储其子树,不存储字母 3、每个节原创 2015-04-26 21:10:16 · 890 阅读 · 0 评论 -
二叉树
树型结构是一类重要的非线性数据结构,其中二叉树较为常用。二叉树的特点的每个节点至多只有两棵子树(寄即二叉树中不存在大于2的节点),并且二叉树有左右子树之分。二叉树的属性: 1、二叉树有5种基本形态,(a)空二叉树 (b)仅有根节点的二叉树 (c) 右子树为空的二叉树 (d)左右子树均为非空的二叉树(e)左子树为空的二叉树二叉树的性质; 性质1 在二叉树的第 i 层原创 2015-04-23 07:36:55 · 2413 阅读 · 0 评论 -
NYOJ 116 士兵杀敌(二) (线段树区间求和)
题目链接:NYOJ 116 士兵杀敌(二) 这一个是线段树的入门级水题,本题要求我们给出某个区间的区间和。这个问题和线段树的单点更新还是基本一致的。只要把单点更新中的值覆盖变为值得叠加,这一题便可以轻松解决了。如果不知道线段树的单点更新,请移步:传送门【代码如下】原创 2015-04-29 22:17:00 · 1191 阅读 · 0 评论 -
hdu1754 I Hate It (区间最值)
题目连接:hdu1754 I Hate It 本题考查的是线段树的基本操作。如果不懂线段树的基本操作请移步:这里 这一题是我学完线段树后的第一道线段树的题,可以说是十分的基础,我刚学完就可以一遍AC。大家只要对线段树的基本操作有所了解,应该是可以轻松AC的。代码如下:原创 2015-04-28 22:23:18 · 1472 阅读 · 0 评论 -
二叉树之层次遍历
下面是对层次遍历的一个实例,如果对二叉树不太了解请点击这里任务要求:输入一棵二叉树,进行层次遍历,每个节点都按照从根节点到他的移动序列给出(L表示左,R表示右)。在输入中,每个节点的左右括号之间没有空格,相邻节点之间用一个空格隔开。每棵数的输入用一队空括号 () 表示结束(这对括号本身并不代表一个节点),如图所示。(画的略丑)注意:如果从根到某个叶节点的路径上有的原创 2015-04-23 09:16:14 · 33673 阅读 · 4 评论 -
归并树(POJ 2104 K-th Number)
在求解区间第k个数的问题,除了划分树以外我们还可以使用另一种高效的方法 ------ 归并树。所谓归并树,就是利用线段树的建树过程,将归并排序的过程保存。在发生地方的发生的原创 2016-04-20 21:13:11 · 4430 阅读 · 0 评论