797.所有可能的路径
class Solution {
public:
vector<vector<int>> result; // 收集符合条件的路径
vector<int> path; // 0节点到终点的路径
// x:目前遍历的节点
// graph:存当前的图
void dfs(vector<vector<int>>& graph, int x){
// 要求从节点 0 到节点 n-1 的路径并输出,所以是 graph.size() - 1
if(x==graph.size()-1){// 找到符合条件的一条路径
result.push_back(path);
return;
}
for(int i=0;i<graph[x].size();i++){// 遍历节点n链接的所有节点
path.push_back(graph[x][i]);// 遍历到的节点加入到路径中来
dfs(graph,graph[x][i]); 进入下一层递归
path.pop_back();/// 回溯,撤销本节点
}
}
vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
result.clear(); // 可以不写
path.clear(); // 可以不写
path.push_back(0); 无论什么路径已经是从0节点出发
dfs(graph,0);//开始遍历
return result;
}
};