
数据结构
cerf-volant
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
搜索
目录 1. 引入 1.1搜索 1.2常见容器 1.3 与搜索问题有关的数据结构 2. 搜索树(二叉搜索树) 2.1 定义 2.2 时间复杂度 2.3 查找一个指定数 2.4 插入一个数 2.5 删除一个节点 2.6 缺点 3. 平衡树 3.1 定义 3.2AVL树 3.3红黑树 3.3 时间复杂度 4. B-树 4.1 引入 4.2 使用场景 4.3...原创 2019-06-02 09:03:25 · 217 阅读 · 0 评论 -
堆
目录 1. 堆简介 2. 堆化 3. 建堆 4. 堆与数组的比较 1. 堆简介 顺序存储二叉树,把二叉树的值存在数组中 -> 按层序遍历的方式平铺在数组中。 大多数情况下,只存储完全二叉树。 下标的计算 已知双亲节点的下标 parent 左孩子的下标 left = 2 * parent +1 右孩子的下标 left = 2 * parent + 2 已...原创 2019-05-06 09:27:48 · 150 阅读 · 0 评论 -
解析七大排序
目录 1. 排序 2. 常见的排序算法 2.1 直接插入排序 (减治) 2.1.1 思路 2.1.2 具体实现 2.1.3 时间复杂度 2.1.4 空间复杂度 2.1.5 稳定性 2.1.6 代码 2.2 希尔排序 2.2.1 思路 2.2.2 具体实现 2.2.3 时间复杂度 2.2.4 空间复杂度 2.2.5 稳定性 2.2.6 代码 2.3 选择排序 (减...原创 2019-04-29 09:24:08 · 268 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历
目录 1. 定义 2. 递归实现 2.1 前序遍历 2.2 中序遍历 2.3 后序遍历 3. 非递归实现 3.1 前序遍历 3.2 中序遍历 3.3 后序遍历 1. 定义 遍历 指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。 遍历方式 前序 根 左子树 右子树 中序 左子树 根 右子树 后序 左子树 右子树根 ...原创 2019-04-23 21:43:44 · 149 阅读 · 0 评论 -
二叉树的层序遍历
1. 定义 设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。 层序遍历为广度优先遍历,需要队列实现。 2. 普通的层序遍历 思路 启动 -> 根入队列 找下线(去除空节点) 取队首 找左右...原创 2019-04-21 09:12:28 · 1354 阅读 · 0 评论 -
二叉树的创建
1. 带有空节点的前序 -> 创建二叉树 不能用普通的前序遍历创建二叉树,得到的二叉树不唯一。因此,使用带空节点的前序遍历来创建二叉树。根据带空节点的前序遍历,可以简单明确的得到根节点(下标为0的结点)。 1.1 步骤 通过前序遍历的第一个值创建根节点 将除了根节点之外的其他值存入左遍历 通过左遍历创建左子树,并获得左遍历使用的节点个数及左子树的根 将除了根节点以及左子树使...原创 2019-04-19 20:48:32 · 275 阅读 · 0 评论 -
栈与队列
目录 1.栈 1.1 栈的规则与操作 1.2 栈的实现 2. 队列 2.1 队列的规则与操作 2.2 队列的实现 1.栈 一种特殊的线性表,只能在固定的一端(栈顶)进行插入、删除,另一端成为栈底。 Java中提供了一个类,java.util.Stack<E> 1.1 栈的规则与操作 规则 先进后出(FILO) / 后进先出(LIFO) 压栈 ...原创 2019-04-18 18:17:36 · 121 阅读 · 0 评论 -
二叉树
目录 1. 树 1.1 树的概念与结构 1.2树的表示 2. 二叉树 2.1 概念 2.2 二叉树的5种结构 2.3 特殊的二叉树 2.4 二叉树的存储结构 2.5 链式结构的实现 1. 树 1.1 树的概念与结构 树是一种非线性的数据结构,由n(n>=0)个有限结点组成一个具有层次关系的集合。 一棵有N个结点的树有N-1条边 每个节点可有0或多个子结点 ...原创 2019-04-17 22:46:45 · 140 阅读 · 0 评论 -
顺序表与链表
目录 1. 线性表 2. 顺序表 2.1 分类 2.2 顺序表的增与删 2.3 顺序表的扩容 3. 链表 3.1 简介 3.2 链表的增与删 4. 顺序表 battle 链表 1. 线性表 n个具有相同特性的数据元素的有限序列。 线性表在逻辑上是连续的,但是在物理结构上不一定连续。 常见的线性表:顺序表、链表、栈、队列、字符串... 2. 顺序表 物理结...原创 2019-04-08 14:07:16 · 146 阅读 · 0 评论 -
二分查找
在有序数组中查找指定数字,找到 -> 返回该数字的下标;未找到 -> 返回-1。 先找到数组中最中间的数,与指定数字比较 若 > 指定数字,在左半部分继续二分查找 若 < 指定数字,在右半部分继续二分查找 思考: 变量 left:区间的左边界 初始:left=0 right:区间的右边界 初始:right=array.length-1 ...原创 2019-04-07 09:23:26 · 98 阅读 · 0 评论 -
初识数据结构及复杂度
目录 1. 初识数据结构 2. 复杂度 2.1 时间复杂度 2.2空间复杂度 1. 初识数据结构 计算机所做的很多事情都是将数据组织起来去操作,这就引出了数据结构与算法。 数据结构:研究数据组织,计算机存储、组织数据的方式。 算法:计算过程,将输入转换为输出。 通俗的讲,数据结构就是数据,算法就是操作。比如:水就是数据结构,而烧水就是算法。 2. 复杂度 一个特定问题有多种解...原创 2019-04-03 20:47:54 · 149 阅读 · 0 评论