一、数据结构
将数组、树。二叉树的基本知识点看完,复习并理解了一遍;对图这种数据结构的概念有了基本的了解
(一)数组
- 数组的一种线性表的推广
- 在二维(或者多维)数组存储时,要看清楚是按行还是按列优先存储
- 特殊矩阵如何压缩存储,对称矩阵,上、下三角矩阵,对角矩阵
- 稀疏矩阵:非零元素个数相对于矩阵元素总个数非常小的矩阵
- 稀疏矩阵的元素分布没有规矩,具有随机性
- 稀疏矩阵无随机存取性
- 稀疏矩阵可以用三元组、十字链表两种方式存储
(二)树
- 树是一种树形结构,是非线性结构,常用的树形结构有树和二叉树,一对多的关系
- 树的逻辑表示方式、基本术语、性质。基本运算等
- 结点总数=度之和+1
- 度为m的树中的第i层上最多有
个结点
- 高度为h的m次树最多有
个结点
- 具有n个结点的m次树的最小高度为
向上取整
- 树的遍历:先根遍历、后根遍历、层次遍历
- 树的存储结构:双亲存储结构、孩子链存储结构、孩子兄弟链存储结构
(三)二叉树
- 二叉树的结点最多只能有两个孩子结点,且这两个结点有次序,有左右之分,左子树和右子树不能交换
- 满二叉树:所有叶子结点都在最底层,高度为h的有
个结点的二叉树,只有度为0和度为2的结点
- 完全二叉树:最多只有最下面两层的结点度数可以小于2,且最下层依次排列在最左边
- 二叉树、满二叉树、完全二叉树相关的一些性质
- 常用的几个关系式:(1)度之和=n-1 (2)
(3)度之和=
- 树、森林和二叉树如何转换
- 二叉树的存储结构:(1)顺序存储结构:用数组(开头下标为1),无元素是用"#"填充(2)链式存储结构:二叉链(data、*lchild、*rchild),空指针域有n+1个
- 二叉树的基本运算:创建(逻辑->存储,使用栈)、销毁、查找结点、找孩子结点、求高度、输出(存储->逻辑)
- 二叉树的遍历、算法实现及其应用:先序遍历、中序遍历、后序遍历、层次遍历(非递归)
(三)构造二叉树
- 中序序列和先序序列唯一确定
- 中序序列和后序序列唯一确定
- 中序序列和层次序列唯一确定
- 算法实现及其应用
(四)线索二叉树
- 有指向前驱结点和后继结点的指针称为线索,创建线索的过程称为线索化,线索化的二叉树叫线索二叉树
- 加两个标记 data、*lchild、ltag、*rchild、rtag,标记为0,指针指向孩子结点;标记为1,指向线索。左线索:前驱结点;右线索:后继结点
- 线索化结点 和 用哪种序列线索化有关系
- 中序线索二叉树算法的实现
- 遍历中序线索化二叉树算法
(五)哈夫曼树
- 在n0个带权叶子结点构成的所有二叉树中,带权路径长度WPI最小的二叉树 称为哈夫曼树/最优二叉树
- 哈夫曼树的构造算法
- 从根节点到叶子结点经过的分支对应的0和1组成的序列 的编码 称为哈夫曼编码(左0 右1)
(六)图
- 图G是由两个集合组成的,V顶点的集合,E两个不同顶点的边的集合
- 图的一些基本术语:端点,邻接点,顶点的度、入度、出度,完全图,稠密图,稀疏图,子图,路径,路径长度,回路或环,连通、连通图、连通分量,强连通图,强连通分量
二、洛谷写题
入门4:数组(15/20)
- 开数组空间的时候,一定要开大些!!!不然数据越界,会导致测试点过不了的!
- 数组定义时尽量不要使用
a[n]
这样定义,可以开大一些,然后for循环,n规定范围
-
可以使用n--这样的定义
-
在for循环时注意条件