leetcode

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit dc148fa590a1c382eb5f4e4587f36d03fe009af0
parent c8218849eece650cf9e68e3a045748d971a01b7c
Author: Andrew Laack <andrew@laack.co>
Date:   Wed, 16 Jul 2025 19:30:42 -0500

Completed clone graph

Diffstat:
Aclone-graph/clone-graphV1.py | 50++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+), 0 deletions(-)

diff --git a/clone-graph/clone-graphV1.py b/clone-graph/clone-graphV1.py @@ -0,0 +1,50 @@ +""" +# Definition for a Node. +class Node: + def __init__(self, val = 0, neighbors = None): + self.val = val + self.neighbors = neighbors if neighbors is not None else [] +""" + +from typing import Optional + + +class Solution: + def cloneGraph(self, node: Optional["Node"]) -> Optional["Node"]: + # this is a list of values + # and the corresponding values that it is adjacent to. + + lookup = {} + dfs(node, lookup) + + nodes = {} + + for val in lookup: + nodes[val] = Node(val) + + for val in nodes: + current_node = nodes[val] + for tail_edge in lookup[val]: + if current_node.neighbors is not None: + current_node.neighbors.append(nodes[tail_edge]) + else: + current_node.neighbors = [nodes[tail_edge]] + + return nodes.get(1) + + +def dfs(current_node, lookup): + + if current_node is None or current_node.val in lookup: + return None + + lookup[current_node.val] = [] + + if current_node.neighbors is None: + return + + for neighbor in current_node.neighbors: + lookup[current_node.val].append(neighbor.val) + dfs(neighbor, lookup) + + return