数据结构
文章平均质量分 77
zhaoyunfullmetal
这个作者很懒,什么都没留下…
展开
-
二叉搜索树
二叉搜索树是一种常用的数据结构,其也是面试中常被问到的问题,因此掌握二叉搜索树十分必要。 本文就二叉搜索树上的一些常见操作进行较为详细的介绍。二叉搜索树首先看一下二叉搜索树的定义: 二叉搜索树或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序原创 2015-08-28 21:36:32 · 897 阅读 · 1 评论 -
Trie——字典树
字典树首先看下百度百科的定义. 字典树 是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。 —— [百度百科 ] 一个典型的字典树可以如上图所示。字典树的性质字典树主要有以下性质: 根结点不包含字符原创 2015-06-17 09:16:39 · 560 阅读 · 0 评论 -
不相交集合-并查集
并查集的定义不相交集合维护了一个不相交动态集的集合。我们用一个代表来标示每个集合,而这个代表是这个集合的某个成员。 该集合中最主要的两个操作Union(合并)与Find(查询),因此该数据结构也叫做并查集。让我们看一下百度百科的介绍: 在一些有N个元素的集合应用问题中,我们通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个原创 2015-07-18 17:27:01 · 1427 阅读 · 0 评论 -
线段树
线段树 本文总结自己学习线段树的一些知识点。我最初是通过区间最值查询问题学习到线段树,查询一个区间的最值可以使用RMQ离线算法,该离线算法需要O(nlgn)的预处理时间和O(1)的查询时间。但是一个区间的某个值修改后,又需要重新计算,对于区间的值频繁的修改的情况,RMQ离线算法并不合适。 线段树确是可以针对区间的值频繁的修改的情况作出应对。线段树是用O(lgn)的时间处理修改,用O(lgn)的原创 2015-10-17 22:09:34 · 1004 阅读 · 0 评论 -
Cache——缓存数据结构实现
Cache——缓存缓存是临时存放数据的区域,缓存的运行速度比内存快得多,设计好一个缓存结构能够帮助我们更快地运行程序。 进来在阿里面试的时候也遇到设计一个缓存的问题,同时leetcode和Hihocoder上都出现了设计缓存的问题,因此特此整理出来以便后续回忆。设计思路本文将最为常见的缓存的设计思路,学习操作系统的时候,我们直到一个内存置换的算法:LRU(Least Recently Used)。原创 2015-09-16 18:13:49 · 6625 阅读 · 0 评论