树
GMFTBY
for all
展开
-
二叉树存储 最小堆
最小堆相当于是一个优先队列因为父亲和左右孩子的编号之间有奇妙的关系,我们可以利用一维数组进行数据的存储下面附上最小堆的siftdown和siftup函数以及利用这函数进行最小堆的生成#include"iostream"#include"cstdio"using namespace std;int h[100]; //存储数原创 2016-03-12 00:14:44 · 736 阅读 · 0 评论 -
胜者树 败者树 K-路最佳归并树 高效外部排序
外部排序 外部排序和内部排序还是有非常的的不同的,我们的外部排序主要针对的优化目标也是不同的,这里我先从外部排序的物理基础开始进行讲解1.外存:外部存储设备,相对于我们的内部存储设备而言具有一些特点1.优点:永久存储能力,便携性,存储空间大2.缺点:访问速度相对于内存的访问速度来说极其低下(相差约5~6个数量级)因此对于外存来说,我们要遵守的基本操作原则就是:尽原创 2016-12-02 16:33:21 · 9256 阅读 · 1 评论 -
POJ 1861 - MST - Krustral
1.Question:输入:第一行两个数字,第一个n代表是点数,第二个m代表边数之后的m行代表有m个边,前两个代表两个点,第三个数字代表权重输出:MST中最大的边边的个数(n-1)将边集列出来2.Solution:标准的套模板,1861的题目的标准样例有一些问题,但是不应向我们做题,毕竟是Special Judge3.Code:#include"iost原创 2016-11-12 21:41:33 · 416 阅读 · 0 评论 -
POJ 2503 - 字典树再解
1.Question:题意:有不超过10w个字典序列,每个字典序列中都是两个字符串,第一个字符串是英文,第二个字符串是对应的一门不知道什么语言现在要求我们尽可能快速的建立映射,是的我们根据输入的外语可以快速的查找到对应的英语每个单词的长度不超过10,全部都是小写(简化了问题)输入样例和解释:dog ogdaycat atcaypig igpayfroot原创 2016-10-31 12:07:39 · 465 阅读 · 0 评论 -
Segment Tree 线段树总结
1.何为线段树准确的来说,线段树是一种平衡二叉树,当我们的要换分的区间大小是2的幂的话,刚好我们的线段树就是一颗满二叉树,但是如果不是的话,我们最多只能叫他是平衡二叉树正因为是一颗平衡二叉树,所以说,线段树的划分是均匀的,树高也稳定在logn上(这也就是我们的优化的源泉)上面只是个人的一点小理解,下面我们步入正题线段树Segment Tree,是BST二叉搜索树而一种应用,原创 2016-10-07 19:00:55 · 2527 阅读 · 0 评论 -
HDU1754 - 线段树 Water~
Question:本题是标准的线段树求区间最大值的版题题目描述如下:1.输入直到文件末尾截止2.n,m其中n代表元素的的个数,m代表m次操作3.一行输入n个数字表示所有的数组元素4.接下来m行输入,Q操作代表询问,U操作代表替换5.针对每次的Q操作输出区间最大值Solution:线段树求解区间最大值给树上节点附上权值max标记该节点覆盖的区间内的最大值原创 2016-10-07 17:51:19 · 317 阅读 · 0 评论 -
HDU1556 - 线段树基础
Question:给出一个序列,我们每次都可以给一段子序列进行一次操作序列的数据量是n(nSolution:首先,为了更好的理解我们的线段树的优化措施我们先来考虑一下我们的朴素的做法对于这道题,我们的做法无非就是开辟一个一维数组,每次对那个区间进行操作,我们就对区间范围呢你的所有的数据都统一进行累加操作最后,我们将以为数组的值全部输出就好了该算法的时间复杂度原创 2016-10-07 15:09:35 · 2088 阅读 · 0 评论 -
字典树 Trie
1.什么是字典树字典树,又称单词查找树或者键树,或者前缀树,是哈希树的一种变种,典型的应用就是保存大量的字符串的信息,统计和排序大规模字符串,因为采用了前缀的概念,压缩存储了部分的字符串,所以说,查询和查找效率都非常的高,接近于哈希主要思想就是,利用了空间换时间的思路,将多个字符串的最大公共前缀压缩存储示例图:2.字典树的ADT描述如下:1.根节点不含有键值2.原创 2016-10-03 12:52:06 · 846 阅读 · 0 评论 -
哈夫曼(最优二叉树)
最优二叉树:定义:路径:数的路径就是从书中的一个节点到树中的另一个节点的分支的个数长度,路径上的分支数目我们称之为长度树的路径长度:从树根到每一个节点的长度之和(完全二叉树是一种树的路径最短的二叉树)节点的带权路径长度:从根节点到该节点的路径的分支数目与节点的权值的乘积树的带权路径的长度:树中的所有的节点的带权路径长度之和,并且,我们将改长度定义为WPL最优二叉树(哈夫曼树原创 2016-09-08 16:15:48 · 4082 阅读 · 0 评论 -
微软面试百题010——二叉树节点最大距离
1.问题描述:求二叉树结点中的最大距离(假设二叉树中节点都可以是双向的)2.思路:先援引一段很牛逼的英文:ANSWER:This is interesting... Also recursively(递归的), the longest distance between two nodes must be either from root to one leaf, or betw原创 2016-08-14 14:10:02 · 930 阅读 · 0 评论 -
微软面试百题008——后序遍历找BST
1.题目描述:通过我们给出的一个后序遍历结果,找出一颗二叉树满足要求,找到了,返回true,没找到返回false2.解法:又是一道BST 性质和后序遍历结合的题:首先BST我们就不过多赘语了:BST总结我们这道题主要考的使我们的后序遍历的性质:我们对一个给出的后序遍历可以这么来理解:我们把后序遍历先拆开两块:后序遍历的划分特点A |B |C原创 2016-08-13 21:25:32 · 987 阅读 · 0 评论 -
微软面试百题001——BST转化有序双向链表
微软面试百题001题解,超详细的解释内容,算法实现,以及本博主倾力打造的BST总结连接,绝对让想学之人有所学,言简意赅,赚的就是回头客原创 2016-08-06 14:40:14 · 3038 阅读 · 0 评论 -
微软面试百题005——堆实现求前k大/小的数
1.题目描述:请求出一组序列中的数中的前k小的数,或者前k大的数,问题很简单2.算法思路:该题利用顺序存储二叉堆可以很好的解决:首先我们先解释一下“堆”这个数据结构堆这个东西我们可以理解成是利用了二叉树的一条性质而人工构建的一组顺序存储二叉树分类:最小堆:每个父亲节点都比子节点小最大堆:每个父亲节点都比子节点大顺序存储实现的原理:二叉树存在一条性质,原创 2016-08-09 18:28:23 · 783 阅读 · 0 评论 -
微软面试百题005——SBT再解第K数问题
1.题目描述:求一组数组中的第K大或者第k小的数2.算法:上一期我们通过了二叉堆来进行该问题的求解,非常的高效,我们通过O(n)就可以解决问题这一期我们通过SBT来解决:SBT详解我们通过SBT的select来解决问题会变得非常高效,如果不考虑剑术的时间,时间复杂度是O(logn),如果考虑建树是O(logn+n*logn)附上select函数代码:int SB原创 2016-08-18 15:18:45 · 662 阅读 · 0 评论 -
树及二叉树
1.基础概念:树是一种扩展性的数据结构,体现在树额一对多的方面上一.树的表示方法1.双亲表示树:结构体包含数据域和指向双亲的指针域,我们也可以添加指向长子的指针域和只想有兄弟的指针域2.孩子表示树:两种结构体,一种结构体建立出顺序的数组结构,保存数据域和指向孩子的指针域 第二种结构体,包含有指向对应的孩子的指针域,还包含指向与其有相同的双亲的兄弟的节点原创 2016-08-04 16:59:46 · 474 阅读 · 0 评论 -
二叉查找树BST总结
二叉查找树BST总结分析1.ADT(抽象数据类型)ADT BST{ 数据元素:数据节点(键值,位置信息)数据关系:父子关系基本操作:插入节点查找节点删除节点遍历节点(前中后层序)}2.二叉查找树性质:(不存在相同键值的节点)1.空树2.非空树并且左子树所有节点的键值均小于本节点的键值 右子树所有的节点的键值原创 2016-07-31 22:59:16 · 3000 阅读 · 0 评论 -
树的应用 森林 并查集
并查集属于不相交的数据结构,可以用一个根节点代表整棵树来进行判断,并查集的核心简化步骤有一个就是在构建树的时候应用了路径压缩以便之后查找的时候速度更加快捷以下贴出例题源码,并在源码中讲解并查集的四个模板函数#include"iostream"#include"cstdio"using namespace std;int fa[100]; //记录编原创 2016-03-13 23:44:49 · 651 阅读 · 0 评论 -
AVL - 自平衡二叉树 - 详解
1.AVL说到AVL,我们就必须先要了解一下BSTLantian的BST总结在了解了有关BST的性质之后,我们现在就明白了因为在我们的插入的节点有序的情况下,我们的BST会出现偏树的情况,这会导致我们的ASL(平均查找长度)大大增加从而降低我们的查找效率因此,我们就需要一种BST的优化版本取克服这种输入造成的弊端(现在证明,在平均情况下,出现偏树的概率大致在45.6%),所以说,我原创 2016-11-23 16:26:18 · 1587 阅读 · 0 评论