LeetCode-python 面试题04.01. 节点间通路

题目链接
难度:中等       类型: DFS


节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。

示例

输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2
输出:true

解题思路


从起始点开始,一步一步走就好了

代码实现

基本的dfs解法

class Solution:
    def findWhetherExistsPath(self, n: int, graph: List[List[int]], start: int, target: int) -> bool:
        visited = set()
        path = collections.defaultdict(set)
        for x, y in graph:
            path[x].add(y)

        def dfs(cur_start):
            if cur_start in visited:
                return False
            if target in path[cur_start]:
                return True
            visited.add(cur_start)

            for new_start in path[cur_start]:
                if dfs(new_start):
                    return True
            return False

        return dfs(start)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容