图基础

图(Graph)应用广泛,程序中可用邻接表和邻接矩阵表示图。依据不同维度,图可以分为有向图/无向图、有权图/无权图、连通图/非连通图、循环图/非循环图,有向图中的顶点具有入度/出度的概念。

 

面对图相关问题,第一步是将问题转为用图表示(邻接表/邻接矩阵),二是使用图相关算法求解。

  

相关LeetCode题:

997. Find the Town Judge  题解 

1042. Flower Planting With No Adjacent  题解

 

图的遍历(DFS/BFS)

图的遍历/搜索可使用DFS或BFS方法。DFS方法  可视化过程,BFS方法  可视化过程

 

相关LeetCode题:

332. Reconstruct Itinerary  题解

785. Is Graph Bipartite?  题解 

802. Find Eventual Safe States  题解

1059. All Paths from Source Lead to Destination  题解

133. Clone Graph  题解

 

关于BFS,详见:算法与数据结构基础 - 广度优先搜索(BFS)

 

最短路径问题

BFS另可用于求解无权图的最短路径问题,相关LeetCode题:

310. Minimum Height Trees  题解

854. K-Similar Strings  题解

 

对于有权图的单源最短路径问题,Dijkstra算法用于无负权边的问题求解 可视化过程,Bellman-Ford算法支持判断有无负权回路、若有则不存在最短路径。Floyd-Warshall是求解多源、无负权边的最短路径问题的算法 可视化过程

 

相关LeetCode题:

1129. Shortest Path with Alternating Colors  题解

928. Minimize Malware Spread II  题解

743. Network Delay Time  题解