数据结构
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 · 178 阅读 · 0 评论 -
堆
目录1. 堆简介2. 堆化3. 建堆4. 堆与数组的比较1. 堆简介顺序存储二叉树,把二叉树的值存在数组中 -> 按层序遍历的方式平铺在数组中。大多数情况下,只存储完全二叉树。 下标的计算 已知双亲节点的下标 parent 左孩子的下标 left = 2 * parent +1 右孩子的下标 left = 2 * parent + 2 已...原创 2019-05-06 09:27:48 · 123 阅读 · 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 · 219 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历
目录1. 定义2. 递归实现2.1 前序遍历2.2 中序遍历2.3 后序遍历3. 非递归实现3.1 前序遍历3.2 中序遍历3.3 后序遍历1. 定义遍历 指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。 遍历方式 前序 根 左子树 右子树 中序 左子树 根 右子树 后序 左子树 右子树根 ...原创 2019-04-23 21:43:44 · 120 阅读 · 0 评论 -
二叉树的层序遍历
1. 定义 设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。 层序遍历为广度优先遍历,需要队列实现。 2. 普通的层序遍历 思路 启动 -> 根入队列 找下线(去除空节点) 取队首 找左右...原创 2019-04-21 09:12:28 · 1309 阅读 · 0 评论 -
二叉树的创建
1. 带有空节点的前序 -> 创建二叉树不能用普通的前序遍历创建二叉树,得到的二叉树不唯一。因此,使用带空节点的前序遍历来创建二叉树。根据带空节点的前序遍历,可以简单明确的得到根节点(下标为0的结点)。 1.1 步骤 通过前序遍历的第一个值创建根节点 将除了根节点之外的其他值存入左遍历 通过左遍历创建左子树,并获得左遍历使用的节点个数及左子树的根 将除了根节点以及左子树使...原创 2019-04-19 20:48:32 · 220 阅读 · 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 · 100 阅读 · 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 · 105 阅读 · 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 · 120 阅读 · 0 评论 -
二分查找
在有序数组中查找指定数字,找到 -> 返回该数字的下标;未找到 -> 返回-1。先找到数组中最中间的数,与指定数字比较 若 > 指定数字,在左半部分继续二分查找 若 < 指定数字,在右半部分继续二分查找 思考:变量 left:区间的左边界 初始:left=0 right:区间的右边界 初始:right=array.length-1 ...原创 2019-04-07 09:23:26 · 77 阅读 · 0 评论 -
初识数据结构及复杂度
目录1. 初识数据结构2. 复杂度2.1 时间复杂度2.2空间复杂度1. 初识数据结构计算机所做的很多事情都是将数据组织起来去操作,这就引出了数据结构与算法。数据结构:研究数据组织,计算机存储、组织数据的方式。 算法:计算过程,将输入转换为输出。 通俗的讲,数据结构就是数据,算法就是操作。比如:水就是数据结构,而烧水就是算法。2. 复杂度一个特定问题有多种解...原创 2019-04-03 20:47:54 · 112 阅读 · 0 评论