797. All Paths From Source to Target**

https://leetcode.com/problems/all-paths-from-source-to-target/

题目描述

Given a directed, acyclic graph of N nodes. Find all possible paths from node 0 to node N-1, and return them in any order.

The graph is given as follows: the nodes are 0, 1, ..., graph.length - 1. graph[i] is a list of all nodes j for which the edge (i, j) exists.

Example:

Input: [[1,2], [3], [3], []]
Output: [[0,1,3],[0,2,3]]
Explanation: The graph looks like this:
0--->1
|    |
v    v
2--->3
There are two paths: 0 -> 1 -> 3 and 0 -> 2 -> 3.


Note:

• The number of nodes in the graph will be in the range [2, 15].
• You can print different paths in any order, but you should keep the order of nodes inside one path.

C++ 实现 1

class Solution {
private:
void dfs(const vector<vector<int>> &graph,
int node,
vector<int> &path, vector<vector<int>> &res) {
if (path.back() == graph.size() - 1) {
res.push_back(path);
return;
}
auto neighbors = graph[node];
for (auto &n : neighbors) {
path.push_back(n);
dfs(graph, n, path, res);
path.pop_back();
}
}
public:
vector<vector<int>> allPathsSourceTarget(vector<vector<int>>& graph) {
vector<int> path{0};
vector<vector<int>> res;
dfs(graph, 0, path, res);
return res;
}
};


©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客