基本思想
- 访问顶点v;
- 依次从v的未被访问的邻接点出发,对图进行深度优先遍历;直至图中和v有路径相通的顶点都被访问;
- 若此时图中尚有顶点未被访问,则从一个未被访问的顶点出发,重新进行深度优先遍历,直到图中所有顶点均被访问过为止。
存储结构
实现方式
邻接表非递归实现
- 根据指定的输入方式,把各节点的关系生成图。
- 深度优先算法:采用栈(后进先出LIFO)的思想,遍历节点时,被遍历的节点出栈,再遍历其子节点,将子节点逐一进栈。
对照上图看栈的变化
邻接表实现
1 | /** |
结果
1 | a |
邻接矩阵实现
1 | class Graph |
结果
1 | a |