解题思路:
这道题考察的是图的遍历,与N叉树的遍历很相似。
path 是每次递归,记录路径的list,想象一下遍历树的时候,到达根节点,我们要向上遍历…, path是维护这个过程的list。
res 是记录最后输出路径的list。
class Solution {
List<List<Integer>> res = new LinkedList<>();
public List<List<Integer>> allPathsSourceTarget(int[][] graph) {
LinkedList<Integer> path = new LinkedList<>();
traverse(graph, 0, path);
return res;
}
void traverse(int[][]graph, int s, LinkedList<Integer>path){
path.add(s);
int n = graph.length;
if(s == n - 1){
res.add(new LinkedList<>(path));
path.removeLast();
return;
}
for(int v : graph[s]){
traverse(graph, v, path);
}
path.removeLast();
}
}
|