day50 图论01 深度优先搜索

58 阅读1分钟

接下来开始图论了,先来个深搜~

797. 所有可能的路径

文章讲解

思路:邻接表的深度优先搜索。

class Solution:
    def allPathsSourceTarget(self, graph: List[List[int]]) -> List[List[int]]:
        self.result = []
        self.path = [0] # 注意1:从源节点开始

        n = len(graph)
        self.dfs(graph, 0, n-1) # 注意2:0~n-1
        return self.result
    
    def dfs(self, graph: List[List[int]], x: int, target: int):
        # graph: 邻接表;x:当前节点;n:终点

        # 确定终止条件
        if x == target: 
            self.result.append(self.path[:]) # 注意3 ``:`创建浅拷贝避免被修改
            return
        
        # 迭代x节点的所有链接的节点
        for i in graph[x]:
            self.path.append(i)
            self.dfs(graph, i, target)
            self.path.pop()

昨天断了一天,可耻!今天偷个懒,就刷一题吧,别完美主义~ 第6天打卡!