1.线性查找
全部遍历
2.二分查找
3.插值查找(基于二分法)
分布均匀时效率高。
4.哈希表(散列表)
“珠珠帘”结构,数组+链表
节点:
链表:
add:
list功能:
查询功能:
构建哈希表:
数组中添加:
注意区分链表中添加。
哈希表的list和查询功能:
5.树
度:子节点个数
满二叉树:所有叶子节点都在最后一层,节点数为(2^n)-1
完全二叉树:
实现:一维数组(满二叉树)或者二叉链表(其他)
二叉树
遍历查找(Node类里面定义):
前序遍历:
中序:
后序:
BinaryTree类里面的查找方法:
前序查找:
中序查找:
后序查找:
- 顺序存储二叉树:
- 线索化二叉树
constructor()、get()、set(), 之后:
线索二叉树:
遍历:
- 测试
6.AVL树
性质:
构建平衡二叉树:
失衡情况:LL、LR、RL、RR。
LL旋转处理 失衡二叉树
RR:
LR:
RL:
插入操作:
测试:
7.堆
分为“大顶堆”和“小顶堆”。
结构:优先使用数组来实现堆。
代码实现:
堆化:自下而上和自上而下。
堆化操作:
- 删除堆顶元素:(自顶向下的堆化)
时间复杂度分析:
- 应用,堆排序:
8.图
顶点:vertex
边:edge
度(degree):该顶点处有几条边。
有向图:边带箭头。度又被分为:入度和出度。
- 图的存储方式
1.邻接矩阵存储。
2.邻接表存储方式
数组来存储顶点,数组中每一个元素是链表,来存储指向关系。
测试:
9.BFS广度优先搜索
测试:
结果:
10.DFS深度优先搜索
定义returnDSF方法:
调用erturnDFS方法: