dfs

  1. 记录路径。用ArrayList记录已经访问过的节点,轮到当前节点时,vis.add(thisNode),接着再dfs函数末尾vis.remove(vis.size() – 1), 从而在访问当前节点后移出访问记录
  2. 如果存在多条路径可以到达某个点的话,dfs最终会多次到达那个点,哪怕使用了vis,因为vis只是防止此次dfs时不 dfs回去。 因此,若某个点其实只需要遍历一次就够了,可再标记一下这个点曾被访问过。