![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 79
MC丶吼吼
跪求offer养家糊口。。
展开
-
数据结构_栈及其应用
站及其应用栈 栈是存放数据对象的一种特殊容器,栈中的元素始终遵循后进先出的顺序,作为一种抽象数据类型,栈支持的操作接口如下:stack<T> S;S.pop();S.top();S.push();s.empty();s.size();栈的应用逆序输出 输出次序与处理过程颠倒;递归深度和输出长度不易知道。 conversion(进制转换)v...原创 2018-06-04 16:14:28 · 15407 阅读 · 0 评论 -
数据结构_kd-树
kd-树一维范围查询 如下图所示,许多实际应用问题,都可归结为如下形式的查询:给定直线L上的点集P={P0,….,Pn-1},对于任一区间R=[x1,x2],P中哪些点落在其中。 上述这种查找问题统称为一维范围查询,对于这种问题的解决方法,我们通常有以下几种方法解决: 1、蛮力算法 可以直接遍历点集P,并且逐个的花费O(1)时间判断各点是否落在区间R内,这样总体的运行时间为O(n)...原创 2018-06-26 15:38:53 · 477 阅读 · 0 评论 -
数据结构_树的定义及存储结构
树树的特点:不是简单的线性结构,但在确定某种次序之后,具有线性特征。对于树,它集成vector和list的优点,既可以快速插入、删除也可以快速查找。 递归定义 树是特殊的图T=(V,E),节点数|V|=n ,边数|E|=e。指定任一节点r属于V作为根后,T即称作有根树。 如: 若指定r=root(T),则 1、称ri 为 r 的孩子;称 r 为 ri 的父亲;r1, r2, ...原创 2018-06-19 16:36:27 · 908 阅读 · 0 评论 -
数据结构_红黑树
红黑树红黑树也是属于一种BBST。在之前介绍的伸展树中,虽然实现简单,分摊复杂度低,但是最坏情况下的操作需要O(n)时间,无法适用于对单次效率敏感的场合。相反的,之前介绍的AVL树尽管可以保证最坏情况下的单次操作,但是要在节点中嵌入平衡因子等标识;更重要的是,删除操作之后可能需要多达O(logn)次旋转。红黑树是针对后一不足的改进。通过为节点指定颜色,合理动态调整。它可以保证:在每一次插入或删...原创 2018-06-25 20:58:52 · 884 阅读 · 0 评论 -
数据结构_B-树
B-树从严格意义上讲B-数并不是二分查找树,在物理上B-树的每个节点可以包含多个分支,但是从逻辑上讲,它等同于二分查找树。为了了解B-树,首先要了解以下几个方面的内容。1、越来越小的内存 事实上:内存容量的增长速度时要远远小于问题数据规模的增长速度,例如: 典型的数据库规模 / 内存容量 1980:10MB / 1MB = 10 2000:1TB / 1GB =...原创 2018-06-25 14:40:23 · 1536 阅读 · 0 评论 -
数据结构_平衡二叉搜索树(伸展树 splay tree)
splay tree与之前介绍的AVL树一样,伸展树也是平衡二叉搜索树的一种形式。首先,鉴于数据访问的局部性在实际应用中普遍存在,将按照“最常用者优先”的启发策略,引入并且实现伸展树。尽管最坏的情况下单次操作需要O(n)时间,但其分摊意义仍然在O(log(n))以内。并且相比于AVL树,伸展树无需时刻都严格的保持全树的平衡。局部性 数据的局部性:刚刚被访问过的元素,极有可能很快地在此被...原创 2018-06-23 15:49:50 · 773 阅读 · 0 评论 -
数据结构_平衡二叉搜索树(AVL树)
平衡二叉搜索树在二叉搜索树中,已经知道search、insert和remove等主要接口的运行时间均正比于树的高度。但是在最坏的情况下,二叉搜索树可能退化成列表,此时查找的效率会降至O(n)。因此,通常通过控制树高,来控制最坏情况下的时间复杂度。 对于节点数目固定的BST,越是平衡,最坏情况下的查找速度越快,如下图所示: 为了理解平衡二叉树,我们首先要理解几个主要概念,理想平衡与适度平...原创 2018-06-21 21:22:36 · 8602 阅读 · 0 评论 -
数据结构_二叉搜索树
二叉搜索树 所谓的查找,指从一组数据对象中找出符合特定条件者。其中的数据对象,统一的表示和实现为词条(entry)的形式;不同的数据项之间,依照各自的关键码(key)彼此区分。 一般而言词条应以如下形式: template <typename K, typename V> struct Entry { //词条模板类 K key; V value; //关键码、数值...原创 2018-06-21 10:46:12 · 442 阅读 · 0 评论 -
数据结构_队列及其应用
除了顺序容器外,标准库还定义了三个顺序容器适配器,stack、queue和priority_queue。本质上一个适配器是一种机制,能使某种事物的行为看起来像另外一种事物一样。一个容器适配器接收一种已有的容器类型,使其行为看起来像另外一种不同类型一样。 本文主要介绍队列及其应用,栈及其应用参考栈及其应用 ,优先级队列参考队列/*queue默认基于deque实现,也可以使用list或v...原创 2018-06-05 17:40:58 · 2104 阅读 · 0 评论 -
数据结构_二叉树的遍历
二叉树的遍历树的遍历即是:按照某种次序访问树中各个节点,并且每个节点恰好被访问一次。 遍历的方式有以下几种: 先序:V | L | R 中序:L | V | R 后序:L | R | V 层次/广度优先:自上而下,先左后右。先序遍历 递归版本:/*struct TreeNode { int val; struct TreeNode *left; ...原创 2018-06-20 15:49:46 · 507 阅读 · 0 评论