高级数据结构
文章平均质量分 70
zadarmo_
重庆大学22级研二,目前正在写论文,目标2024年5月份之前找到一份后端开发相关的实习。
展开
-
【高级数据结构】Trie树
高效地存储和查询字符串的数据结构。所以其重点在于:存储、查询两个操作。原创 2024-03-02 20:08:22 · 620 阅读 · 0 评论 -
平衡二叉树(AVL树)
基本概念ASL:一颗搜索树查找元素的平均查找次数。平衡因子(BF):BF(T) = hL–hR。其中hL,hR分别为左右子树高度。定义平衡二叉树也是一颗搜索树,它的ASL相对来说会小一些。满足以下特性:是一颗空树,或者任一结点左、右子树高度差的绝对值不超过1,即|BF(T)|≤1。/* AVL树结点定义 */typedef struct node* AVLTree;st...原创 2019-08-16 16:43:38 · 396 阅读 · 0 评论 -
堆和堆排序
堆是一种优先队列,堆有两个特性:结构性:用数组表示的完全二叉树;有序性:任一结点的关键字是其子树所有结点的最值。如果是最大值,则成为最大堆;如果是最小值,称为最小堆。基于第一个特性,可以用一个一维数组去存这个堆,起始下标为1。对于堆的操作,下面只给出最大堆的插入和删除的操作。插入元素如图所示:其主要思想是:先将元素放入数组的最后一个位置将这个元素进行向上调整代码如下...原创 2019-08-04 17:24:05 · 153 阅读 · 0 评论 -
线段树
一、线段树简介线段树是一种二叉树,与堆类似可以利用数组进行存储(下标从1开始)。线段树可以用于维护一个序列的某种属性,比如序列和、序列最大值、序列最小值等等。二、举例说明下面举例说明,线段树的结构以及一些操作。考虑这样一个序列:1、2、3、4、5、6、7。我们维护它的序列和。线段树结构如下图所示:说明:线段树的每个节点包含若干个数字。其中叶节点只包含一个数字儿子节点的长度为父节点的一半。即:若当前序列为[L,R][L,R][L,R],且R−L>0R-L>0R−L>0,则父节原创 2020-09-24 21:49:44 · 174 阅读 · 0 评论 -
树状数组
一、前置知识在树状数组中会用到一种位运算 : lowbit(x)=x&(−x)lowbit(x) = x \& (-x)lowbit(x)=x&(−x)。下面来简单说明一下这种位运算的作用。我们知道在计算机中,数值都是以补码形式存储的。所以对于一个正整数x来说,在计算机中 : -x = ~x + 1。我们假设x的二进制表示末位有k个0,此时x和-x可以看作:...原创 2020-03-17 15:07:02 · 142 阅读 · 3 评论 -
并查集
最近做题学习了一点之前学并查集所没有学到的东西。下面整理如下:1.如何在并的时候统计每个集合大小?之前在啊哈算法里面看到的father[ ]数组初始化是这样的:int i;for(i=1;i<=n;i++) father[i]=i;//一开始,每个元素独立成为一个集合,每个元素的父亲节点都是自己。但是这样有一个问题:就是无法计算每个集合元素的个数。如果这样初始化:int i;...原创 2019-08-12 21:17:16 · 1616 阅读 · 0 评论 -
1057 Stack (30分)——甲级(栈、树状数组、二分)
Description:Stack is one of the most fundamental data structures, which is based on the principle of Last In First Out (LIFO). The basic operations include Push (inserting an element onto the top pos...原创 2019-12-17 20:41:27 · 154 阅读 · 0 评论