题目
题解
- 此题用dfs比较有优势,可以找出所有路径
- dfs+回溯
代码
class Solution {
public:
void dfs(vector<vector<int>>& graph,int i,vector<int>& ans,vector<vector<int>>& res){
int n=graph.size();
if(i<n-1){
for(int x:graph[i]){
ans.push_back(x);
dfs(graph,x,ans,res);
ans.pop_back();//回溯
}
}
else{
res.push_back(ans);
}
}
vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
vector<vector<int>> res;
vector<int> ans;
ans.push_back(0);
dfs(graph,0,ans,res);
return res;
}
};
//bfs
// class Solution
// {
// public:
// vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph)
// {
// vector<vector<int>> res;
// queue<vector<int>> q;
// q.push({ 0 });
// while (!q.empty()) {
// vector<int> con = q.front();
// q.pop();
// for (int i = 0; i < graph[con[con.size() - 1]].size(); i++) {
// con.push_back(graph[con[con.size() - 1]][i]);
// if (con[con.size() - 1] == graph.size() - 1) {
// res.push_back(con);
// }
// q.push(con);
// con.pop_back();
// }
// }
// return res;
// }
// };