找到从节点0到n-1的所有路径,肯定是用dfs算法,不过有两种思考方式:
一种是:从后往前考虑。如果这条路能到n-1节点,那么dfs返回一个rec列表,里面存路径。
class Solution:
    def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:
        end = len(graph)-1
        def dfs(node):
            if node == end: return [[node]]
            rec = []
            for nex in graph[node]:
                ans = dfs(nex)
                for ls in ans:
                    rec.append([node] + ls)
            return rec if rec else []
        return dfs(0)
 
rec里面有路径,表明能走,如果是[],说明没路。
另一种是:从前往后考虑。rec代表的是当前dfs走过的节点,遍历到哪个节点就加进rec尾部,退出哪个dfs,就把当前节点弹出。
class Solution:
    def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:
        ans = []
        rec = []
        end = len(graph) - 1
        def dfs(node):
            rec.append(node)
            if node == end:
                ans.append(rec[:])
            for nex in graph[node]:
                dfs(nex)
            rec.pop()
    
        dfs(0)
        return ans 
                

















