## 一、数据结构 1. 单链表(带头结点、不带头结点)设计与实现(增删改查),双链表设计与实现 2. 栈设计与实现(数组和链表),队列设计与实现(数组和链表) 3. 二叉树概念学习,二叉树前序、中序、后序遍历递归、非递归实现 ,层序遍历 4. 二叉排序树设计与实现(插入删除) 5. 堆(优先队列、堆排序) 6. AVL(平衡)树设计与实现(四种自旋方式理解实现) 7. 伸展树、红黑树原理概念理解 8. B、B+原理概念理解 9. 哈夫曼树原理概念理解(贪心策略) 10. 哈希(散列表)原理概念理解(几种解决哈希冲突方式) 11. 并查集/不相交集合(优化和路径压缩) 12. 图论拓扑排序 **待学习** 14. 图论dfs深度优先遍历、bfs广度优先遍历 15. 最短路径Dijkstra算法、Floyd算法、spfa算法 16. 最小生成树prim算法、kruskal算法 17. 其他数据结构线段树、后缀数组等等 ## 二、经典算法 1. 递归算法(求阶乘、斐波那契、汉诺塔问题) 2. 二分查找 3. 分治算法(快排、归并排序、求最近点对等问题) 4. 贪心算法(使用较多,区间选点问题,区间覆盖问题) 5. 常见动态规划(LCS(最长公共子序列) LIS(最长上升子序列)背包问题等等) 6. 回溯算法(经典八皇后问题、全排列问题) 7. 位运算常见问题(参考剑指offer和LeetCode问题) 8. 快速幂算法(快速求幂乘、矩阵快速幂) 9. kmp等字符串匹配算法 10. 一切其他数论算法(欧几里得、拓展欧几里得、中国剩余定理等等)