数据结构学习笔记
RecZ.z
这个作者很懒,什么都没留下…
展开
-
Trie 字典树 前缀树
原创 2019-12-18 16:45:02 · 99 阅读 · 0 评论 -
堆和优先队列
堆:一个特殊的树 普通队列:先进先出、后进后出 优先队列:出队顺序和入队顺序无关;和优先级有关,动态选择优先级高低执行 实现:普通线性结构、顺序线性结构、堆O(logn) 堆的基础结构 二叉堆:(最大堆)完全二叉树,所有节点的值都大于等于其左右子树节点的值 ...原创 2019-12-18 16:44:03 · 77 阅读 · 0 评论 -
平衡二叉树与AVL树
平衡二叉树:对于任意一个节点左子树和右子树的高度差不能超过1 平衡二叉树的高度和节点数量之间的关系也是O(logn)的 标注节点的高度 平衡因子:左右子树的高度差的(左子树高度-右子树高度) ...原创 2019-12-18 16:42:29 · 115 阅读 · 0 评论 -
并查集
网络中节点间的连接状态 连接问题 路径问题 并查集:连接问题 union(p , q) , isConnected(p , q) 并查集实现的接口: public interface UF { int getSize(); boolean isConnected(int p, int q); //连接状态 void unionElements(int p, i...原创 2019-12-18 16:45:17 · 114 阅读 · 0 评论 -
Segment Tree线段树
线段树不是完全二叉树 线段树是平衡二叉树:最大深度和最小深度相差不超过1 堆也是平衡二叉树 最经典的线段树问题:区间染色原创 2019-12-18 16:44:25 · 84 阅读 · 0 评论 -
二分搜索树Binary Search Tree
二叉树 和链表一样,动态数据结构。 基本结构: class Node{ E e; Node left; Node right; } 二叉树具有唯一的根节点 叶子节点 二叉树不一定是“满”的 二叉树具有天然的递归结构 二分搜索树Binary Search Tree 二分搜索树是二叉树 二分搜索树每个节点的值: -----------大于其左子树的所有节点的值; -----------小于...原创 2019-12-18 16:43:43 · 112 阅读 · 0 评论 -
递归与链表
递归:本质上,将原来的问题转化为更小的同一问题。 public class Sum { public static int sum(int[] arr){ return sum(arr , 0); } //计算arr[L ..... n]这个区间内所有数字的和 ,L为数组左边界 private static int sum(int[] arr , i...原创 2019-12-18 16:43:16 · 89 阅读 · 0 评论 -
链表
优点:真正的动态,不需要处理固定容量的问题 缺点:丧失了随机访问的能力 数组最好用于索引由语义的情况。score[2] 最大的优点:支持快速查询 链表不适用于索引由语义的情况。 最大的优点:动态 ...原创 2019-12-18 16:43:31 · 83 阅读 · 0 评论 -
栈stack 队列 Queue
#栈 Stack 栈也是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端成为栈顶 栈是一种后进先出的数据结构(Last In First Out) ##栈的应用 程序调用的系统栈 ##栈的实现 empty() 判断stack是否为空 返回值boolean型 peek() 查询栈顶元素,返回值E型,不进行remove操作 pop() ...原创 2019-12-18 16:43:03 · 75 阅读 · 0 评论