Skip to content

Commit 2fb5d4f

Browse files
committed
2019-07-08
1 parent d6532ff commit 2fb5d4f

File tree

1 file changed

+64
-0
lines changed

1 file changed

+64
-0
lines changed

0133.克隆图/0133-克隆图.py

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
"""
2+
# Definition for a Node.
3+
class Node(object):
4+
def __init__(self, val, neighbors):
5+
self.val = val
6+
self.neighbors = neighbors
7+
"""
8+
class Solution(object):
9+
def cloneGraph(self, node):
10+
"""
11+
:type node: Node
12+
:rtype: Node
13+
"""
14+
from collections import defaultdict, deque
15+
record = defaultdict(list)
16+
mapping = dict()
17+
def bfs(queue):
18+
if not queue:
19+
return
20+
newqueue = deque()
21+
22+
while queue:
23+
cur = queue.popleft()
24+
mapping[cur] = Node(cur.val, [])
25+
for nei in cur.neighbors:
26+
record[cur].append(nei)
27+
if nei not in visited:
28+
visited.add(nei)
29+
newqueue.append(nei)
30+
bfs(newqueue)
31+
32+
visited = {node}
33+
q = deque()
34+
q.append(node)
35+
bfs(q)
36+
37+
# for key, val in record.items():
38+
# print key.val
39+
# for item in val:
40+
# print item.val
41+
# print mapping
42+
visited = {node}
43+
44+
def generate(queue):
45+
while queue:
46+
newqueue = []
47+
for node in queue:
48+
if node:
49+
# print node.val
50+
if not record[node]: #如果没有邻居
51+
return
52+
53+
for nei in record[node]: #处理每个邻居
54+
mapping[node].neighbors.append(mapping[nei])
55+
if nei not in visited:
56+
visited.add(nei)
57+
newqueue.append(nei)
58+
queue = newqueue[:]
59+
q = deque()
60+
q.append(node)
61+
generate(q)
62+
63+
return mapping[node]
64+

0 commit comments

Comments
 (0)