Skip to content

Commit 1552e6f

Browse files
committed
Added class decorator
1 parent bfe956b commit 1552e6f

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

graphs/deep_clone_graph.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,19 @@
99
Each node in the graph contains a value (int) and a list (List[Node]) of its
1010
neighbors.
1111
"""
12+
from dataclasses import dataclass
1213

1314

15+
@dataclass
1416
class Node:
15-
def __init__(self, value: int = 0, neighbors: list | None = None) -> None:
16-
self.value = value
17-
self.neighbors = neighbors or []
17+
value: int = 0
18+
neighbors: list["Node"] | None = None
19+
20+
def __post_init__(self):
21+
self.neighbors = self.neighbors or []
22+
23+
def __hash__(self):
24+
return id(self)
1825

1926

2027
def clone_graph(node: Node | None) -> Node | None:
@@ -24,10 +31,10 @@ def clone_graph(node: Node | None) -> Node | None:
2431
>>> node2 = Node(2)
2532
>>> node3 = Node(3)
2633
>>> node4 = Node(4)
27-
>>> node1.neighbors = [node2, node4]
28-
>>> node2.neighbors = [node1, node3]
29-
>>> node3.neighbors = [node2, node4]
30-
>>> node4.neighbors = [node1, node3]
34+
>>> node1.neighbors.extend([node2, node4])
35+
>>> node2.neighbors.extend([node1, node3])
36+
>>> node3.neighbors.extend([node2, node4])
37+
>>> node4.neighbors.extend([node1, node3])
3138
>>> clone1 = clone_graph(node1)
3239
>>> clone1.value
3340
1

0 commit comments

Comments
 (0)