邻接表法,邻接矩阵法
可以自己写一个图的结构,当遇到任何图类型的题的时候,都可以进行转换
图的宽度优先遍历,二叉树没有环,图可能有环
创建一个队列和set表,把开始节点都压入到这两个里面,如果这个队列不为空,那么就把这个节点拿出来,然后去查找这个节点连接的两个节点,找到的节点看是否在set里面,如果已经存在了就跳过,如果不存在,就压入这个队列和set
图的深度优先遍历
需要一个栈,一个set,一个节点一个节点判断,和这个节点连这的下一个都有哪些节点,然后放入到set里面进行比对,如果set里面有,那就跳过,如果set里面没有,把节点重新压回到栈里面,将下一个节点一块放到节点中,set里面加入这个节点,栈里面永远保存的深度的路径
拓扑排序算法
给一个有向图,最后所有的点都具备依赖,一定没有环
在找到这个最初依赖的时候,把这个节点去掉,然后和他有关的依赖关系也去掉,就可以找到下一个没有依赖关系的节点
kruskal算法
得出最小生成树,所有权重中,和最小,以边的角度出发,依次选择最小的边,需要注意的就是我把边加上,看有没有形成环,一开始假设所有的点都是一个集合,当满足不重复的条件下,把这两个点合并成一个集合,当有点跟这个集合里面的元素重复之后,就证明,如果把这个点加进去,那么就会形成环,那么这个点就不能加进去,并查集结构,时间是常数级别好实现
prim算法生成最小生成树
会把重复的边放到集合里面,但是没有影响,会直接跳过
Dijkstra算法
可以有权值为负数的边,不能有权值为负数的环