一、数据结构
(一)树结构
1、哈夫曼树/Huffman/最优二叉树(带权路径长度最小)
节点的权:根节点到这个节点的跳数(自身不算);例如:下图2的节点的权值就是1
树的阶/度:直接子树的数目的最大值;例如:下图数的阶就是2
哈夫曼树的构建的案例:
(1)构建表
字符 | a | b | c | d | e | f |
频率(%) | 45 | 13 | 12 | 16 | 9 | 5 |
(2)构建树
(3)构建字典表
a | b | c | d | e | f |
0 | 101 | 100 | 111 | 1101 | 1100 |
2、平衡二叉树
任意节点的左右子树深度相差不超过1
3、B树/多路平衡查找树
B树的特征:根节点至少又两个子节点二叉树的顺序存储
4、满二叉树
若高度为 的二叉树有 个结点,则称其为满二叉树
满二叉树也属于完全二叉树
5、完全二叉树
完全二叉树的定义:
- 高度为h、有n个结点的二叉树,当且仅当其每一个结点都与高度为h的满二叉树中的编号从1至n的结点一一对应时,称之为完全二叉树
- 叶子结点只能出现在最下面两层
完全二叉树/满二叉树的高度: 或
完全二叉树也属于平衡二叉树
6、平衡二叉树
平衡二叉树的定义:二叉树中的任意一个结点的左右子树高度只差的绝对值不超过1
二叉树的杂项
计算n个结点的二叉树有y种表示形式;卡特兰数:,
完全二叉树/满二叉树更适合用顺序存储
(二)图结构
顶点数 | |
边数 | |
有向图/无向图的度数之和 | |
连通图 | 图中任意两个顶点都有路径存在 |
适用于 | 时间复杂度 | 适用于 | ||
稠密图/完全图/强连通图 | 每两个顶点之间都有一条边存在 | 邻接矩阵 | Kruscal算法 | |
稀疏图 | 邻接链表 | Prim算法 |
算法策略 | 时间复杂度 | 空间复杂度 | |
矩阵连乘 | 动态规划 |
矩阵中非零元素个数 | |
有向图 | |
无向图 |
二、排序算法
时间的渐进复杂度
- 若对于某常数,有,则
- 若,则