File tree Expand file tree Collapse file tree 1 file changed +11
-13
lines changed Expand file tree Collapse file tree 1 file changed +11
-13
lines changed Original file line number Diff line number Diff line change 12
12
13
13
14
14
class Node :
15
- def __init__ (self , value = 0 , neighbors = None ):
15
+ def __init__ (self , value : int = 0 , neighbors : list | None = None ) -> None :
16
16
self .value = value
17
- self .neighbors = neighbors if neighbors is not None else []
17
+ self .neighbors = neighbors or []
18
18
19
19
20
20
def clone_graph (node : Node | None ) -> Node | None :
@@ -32,20 +32,18 @@ def clone_graph(node: Node | None) -> Node | None:
32
32
33
33
originals_to_clones = {} # map nodes to clones
34
34
35
- def create_clones (node : Node ) -> None :
36
- """
37
- This helper function populates the originals_to_clones map with
38
- the original nodes in the graph mapped to newly created clones.
39
- """
40
- if node in originals_to_clones :
41
- return
35
+ stack = [node ]
42
36
43
- originals_to_clones [node ] = Node (node .value )
37
+ while stack :
38
+ original = stack .pop ()
44
39
45
- for neighbor in node . neighbors :
46
- create_clones ( neighbor )
40
+ if original in originals_to_clones :
41
+ continue
47
42
48
- create_clones (node )
43
+ originals_to_clones [original ] = Node (original .value )
44
+
45
+ for neighbor in original .neighbors :
46
+ stack .append (neighbor )
49
47
50
48
for original , clone in originals_to_clones .items ():
51
49
for neighbor in original .neighbors :
You can’t perform that action at this time.
0 commit comments