提示
仅供个人回顾参考
基本概念
- 查找
- 查找表
- 静态查找表: 无需动态查找表
- 关键字
- 平均查找长度
顺序查找(线性查找)
- 定义
- 无序线性表及有序线性表顺序查找
- 一般线性表顺序查找
- 有序表顺序查找
- 折半查找(二分查找)
- 分块查找(索引顺序查找)
树形查找
-
二叉排序树(BST)
- 主要是提高查找,插入,删除关键字的速度
- 基本操作
- 插入
- 创建(构造)
- 删除
- 效率分析
- 查找: BST查找不唯一,相同关键字插入顺序不同,生成不同二叉排序树(相对二叉查找)
- 插入与删除:
-
平衡二叉树(AVL树 Balanced Binary Tree)
- 定义
- 左右子树高度差为该结点的平衡因子
- 左右子树高度差不超过1的二叉树
- 基本操作
- 插入
- 插入目标结点
- 导致不平衡
- 平衡调整
- LL平衡旋转(右单旋转)
- RR平衡旋转(左单旋转)
- LR平衡旋转(先左后右双旋转)
- RL平衡旋转(先右后左双旋转)
- 删除
- 删除目标结点
- 导致不平衡
- 平衡调整
- 查找
- n个结点的平衡二叉树最大深度
- 平均查找长度
- 插入
- 定义
-
红黑树
- AVL 频繁调整全树整体拓扑结构,代价较大
- 定义
- 二叉排序树
- 结点红色或黑色
- 根结点黑色
- 叶结点黑色
- 不存在相邻红结点
- 每个结点至叶结点黑结点数量相同
- 性质
- 根到叶最长路径不大于最短路径的2倍
- n个结点的红黑树高度
- 新插入结点初始为红色
- 基本操作
- 插入
- 删除(算法逻辑难度高)
-
B树
- 定义
- m阶B树,平衡因子均等于0的m路平衡查找树
- 根非叶子时至少两颗子树
- 除根结点外,所有非叶结点至少个子树,即至少有个关键字
- 所有叶结点都在同一层次
- 性质
- 高度
- 基本操作
- 查找
- 插入
- 删除
- 定义
-
B+树
- 数据库所需的一种B树变形树
- 定义
- 分支节点最多m个子树
- 未完待续..
- 算法
- 最小关键字开始顺序查找
- 根结点开始多路查找
散列表
- 考点
- 选择题:平均查找长度
- 算法题:构造的散列表
- 基本概念
- 散列函数
- 散列表: 建立了关键字与存储地址的一种直接映射关系
- 基本操作
- 创建
- 直接定址法
- 除留余数法
- 数字分析法
- 平方取中法
- 处理冲突的方法
- 开放地址法
- 线性探测法
- 平方探测法
- 双散列法
- 伪随机序列法
- 拉链法(链接法, chaining)
- 创建
- 性能分析
- 平均查找长度
- 取决3个因素: 散列函数,处理冲突的方法,装填因子