File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Expand file tree Collapse file tree 1 file changed +41
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ Time complexity O(V + E)
3+ Space complexity O(V + E)
4+
5+ DFS, BFS
6+ """
7+ from collections import deque
8+
9+ class Solution :
10+ def cloneGraph (self , node : Optional ['Node' ]) -> Optional ['Node' ]:
11+ if not node :
12+ return
13+
14+ clones = {}
15+
16+ def dfs (node ):
17+ if node in clones :
18+ return clones [node ]
19+ clone = Node (node .val )
20+ clones [node ] = clone
21+ for nei in node .neighbors :
22+ clone .neighbors .append (dfs (nei ))
23+ return clone
24+
25+ return dfs (node )
26+
27+ def bfs (self , node ):
28+ if not node :
29+ return
30+
31+ clone = Node (node .val )
32+ clones = {node : clone }
33+ queue = deque ([node ])
34+ while queue :
35+ node = queue .popleft ()
36+ for nei in node .neighbors :
37+ if nei not in clones :
38+ clones [nei ] = Node (nei .val )
39+ queue .append (nei )
40+ clones [node ].neighbors .append (clones [nei ])
41+ return clone
You can’t perform that action at this time.
0 commit comments