1.哈希表
1.1哈希冲突:
哈希冲突(Hash Collision)是指两个或多个不同的输入值(键值)经过哈希函数处理后得到了相同的哈希值。在哈希表(Hash Table)中,这会导致存储或检索数据时出现问题,因为哈希表通常使用哈希值来直接定位数据存储的位置。理论上一定存在“多个输入对应相同输出” 。解决方法:哈希表的结构改良方法主要包括“链式地址”和“开放寻址”。
哈希表有三种常用的遍历方式:遍历键值对、遍历键和遍历值。
2.二叉树基本介绍
2.1二叉树的基本概念
根节点(root node):位于二叉树顶层的节点,没有父节点。
叶节点(leaf node):没有子节点的节点,其两个指针均指向 None
完美二叉树
完全二叉数
完满二叉树
平衡二叉树
2.2遍历
层序遍历(level‑order traversal)从顶部到底部逐层遍历二叉树,并在每一层按照从左到右的 顺序访问节点。层序遍历本质上属于广度优先遍历(breadth‑first traversal),也称广度优先搜索(breadth‑first search, BFS), 它体现了一种“一圈一圈向外扩展”的逐层遍历方式。
前序、中序、后序遍历
前序遍历:从源头往下一点一点走。
中序遍历:从后端往前看,精髓体现在中这个字。
后序遍历:从后端往前看,精髓体现在后这个字。具体多体会几遍。
优点与缺点
二叉搜索树7.4 二叉搜索树 - Hello 算法 (hello-algo.com)
AVL 树既是二叉搜索树,也是平衡二叉树,同时满足这两类二叉树的所有性质,因此是一种平衡二叉搜索树(balanced binary search tree)。
3.堆
简称 大顶堆
堆常用数组实现。
4.图
两种图有向图无向图
4.1图的表示
1.邻接矩阵
2.邻接表
邻接表与哈希表中的“链式地址”相似,也可以采用类似的方法来优化效率。 比如当链表较长时,可以将链表转化为 AVL 树,从而将时间效率从 𝑂(𝑛) 优化至 𝑂(log 𝑛) ;可以链表转换为哈希表,从而将时间复杂度降至 𝑂(1) 。
4.2图的遍历
广度优先遍历(BFS)
深度优先遍历:深度优先遍历是一种优先走到底、无路可走再回头的遍历方式。如图 9-11 所示,从左上角顶点出发,访问当前顶点的某个邻接顶点,直到走到尽头时返回,再继续走到尽头并返回,以此类推,直至所有顶点遍历完成。