You are given an undirected graph represented as an adjacency list, a starting node start, and a target node end. Write a function to determine if there is a path between start and end in the graph. Return true if a path exists; otherwise, return false. The graph is represented as an adjacency list, where each key is a node and its value is a list of neighboring nodes. Select the optimal solution in terms of time complexity. If time complexities are same for multiple solutions, select the one with optimal space complexity. function path_exists(graph, start, end):    stack = [start]    visited = set()    while stack:        node = stack.pop()        if node == end:            return true        if node not in visited:            visited.add(node)            for neighbor in graph[node]:                stack.append(neighbor)    return false function path_exists(graph, start, end, visited=set()):    if start == end:        return true    visited.add(start)    for neighbor in graph[start]:        if neighbor not in visited:            if path_exists(graph, neighbor, end, visited):                return true    return false function path_exists(graph, start, end):    queue = [start]    visited = set([start])    while queue:        node = queue.pop(0)        if node == end:            return true        for neighbor in graph[node]:            if neighbor not in visited:                visited.add(neighbor)                queue.append(neighbor)    return false

icon
Related questions
Question

You are given an undirected graph represented as an adjacency list, a starting node start, and a target node end. Write a function to determine if there is a path between start and end in the graph. Return true if a path exists; otherwise, return false. The graph is represented as an adjacency list, where each key is a node and its value is a list of neighboring nodes. Select the optimal solution in terms of time complexity. If time complexities are same for multiple solutions, select the one with optimal space complexity.

function path_exists(graph, start, end):
    stack = [start]
    visited = set()
    while stack:
        node = stack.pop()
        if node == end:
            return true
        if node not in visited:
            visited.add(node)
            for neighbor in graph[node]:
                stack.append(neighbor)
    return false
function path_exists(graph, start, end, visited=set()):
    if start == end:
        return true
    visited.add(start)
    for neighbor in graph[start]:
        if neighbor not in visited:
            if path_exists(graph, neighbor, end, visited):
                return true
    return false
function path_exists(graph, start, end):
    queue = [start]
    visited = set([start])
    while queue:
        node = queue.pop(0)
        if node == end:
            return true
        for neighbor in graph[node]:
            if neighbor not in visited:
                visited.add(neighbor)
                queue.append(neighbor)
    return false
AI-Generated Solution
AI-generated content may present inaccurate or offensive content that does not represent bartleby’s views.
steps

Unlock instant AI solutions

Tap the button
to generate a solution