🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 创建类 这里使用了 ES6 中的 `面向对象` 的语法。 先实现类及添加顶点的功能。 ## 添加顶点 ![](https://img.kancloud.cn/b7/1b/b71b103422a13edc5033a00a7547e2ea_780x1426.png) 上面的代码实现了向图中添加一些顶点,但现在顶点还没有边。 接下来添加边: ## 添加边 ![](https://img.kancloud.cn/7a/0c/7a0ce9d892e937a197d15bc0eca0842f_658x440.png) 测试: ![](https://img.kancloud.cn/62/c2/62c267f56007d45b3bf7610807059b1a_1610x1084.png) ## 广度优先遍历(BFS) ![](https://img.kancloud.cn/eb/e3/ebe370800564d819cf3841419ff1f1ee_740x1056.png) 测试: ![](https://img.kancloud.cn/96/10/9610e79f8bffb9010bf7aa895c247d5c_2040x1124.png) 结果: ![](https://img.kancloud.cn/a5/6f/a56f926fb4b4c7029b7ceca8ebb25981_294x254.png) ## 深度优先遍历(DFS) 可以使用 `栈` 或者 `递归` 还实现,以下是实现递归的实现方法: ![](https://img.kancloud.cn/bf/c0/bfc0c4ef537216af5352e20e4774ae18_922x1288.png) 结果: ![](https://img.kancloud.cn/9c/9b/9c9b9b2e5f0665047f1023dde06e2e4e_1942x870.png) ## 两个顶点之间的路径 ### 在 BFS 时记录来路 修改 `BFS` 的代码,在遍历时,把每个顶点的上一个顶点(来路)记录下来: ![](https://img.kancloud.cn/3a/a0/3aa02d86184eacab8f53d8c3409d4232_1032x1290.png) 结果: ![](https://img.kancloud.cn/bc/6f/bc6f10acb015aaeda50db24546524a4c_2218x832.png) ### 反向找两个顶点之间的路径 ![](https://img.kancloud.cn/26/d0/26d0fd59c50b8bf0ec4d5d4360543989_886x908.png) 结果: ![](https://img.kancloud.cn/58/38/58385dc3dda93596fbe6e8ed5a041f3d_2046x796.png) ## 拓扑排序