File tree 3 files changed +106
-0
lines changed
solution/0100-0199/0133.Clone Graph
3 files changed +106
-0
lines changed Original file line number Diff line number Diff line change 99
99
100
100
```
101
101
102
+ ### ** TypeScript**
103
+
104
+ ``` ts
105
+ /**
106
+ * Definition for Node.
107
+ * class Node {
108
+ * val: number
109
+ * neighbors: Node[]
110
+ * constructor(val?: number, neighbors?: Node[]) {
111
+ * this.val = (val===undefined ? 0 : val)
112
+ * this.neighbors = (neighbors===undefined ? [] : neighbors)
113
+ * }
114
+ * }
115
+ */
116
+
117
+ function cloneGraph(node : Node | null ): Node | null {
118
+ if (node == null ) return null ;
119
+
120
+ const visited = new Map ();
121
+ visited .set (node , new Node (node .val ));
122
+ const queue = [node ];
123
+ while (queue .length ) {
124
+ const cur = queue .shift ();
125
+ for (let neighbor of cur .neighbors || []) {
126
+ if (! visited .has (neighbor )) {
127
+ queue .push (neighbor );
128
+ const newNeighbor = new Node (neighbor .val , []);
129
+ visited .set (neighbor , newNeighbor );
130
+ }
131
+ const newNode = visited .get (cur );
132
+ newNode .neighbors .push (visited .get (neighbor ));
133
+ }
134
+ }
135
+ return visited .get (node );
136
+ };
137
+ ```
138
+
102
139
### ** ...**
103
140
104
141
```
Original file line number Diff line number Diff line change @@ -113,6 +113,43 @@ class Node {
113
113
114
114
```
115
115
116
+ ### ** TypeScript**
117
+
118
+ ``` ts
119
+ /**
120
+ * Definition for Node.
121
+ * class Node {
122
+ * val: number
123
+ * neighbors: Node[]
124
+ * constructor(val?: number, neighbors?: Node[]) {
125
+ * this.val = (val===undefined ? 0 : val)
126
+ * this.neighbors = (neighbors===undefined ? [] : neighbors)
127
+ * }
128
+ * }
129
+ */
130
+
131
+ function cloneGraph(node : Node | null ): Node | null {
132
+ if (node == null ) return null ;
133
+
134
+ const visited = new Map ();
135
+ visited .set (node , new Node (node .val ));
136
+ const queue = [node ];
137
+ while (queue .length ) {
138
+ const cur = queue .shift ();
139
+ for (let neighbor of cur .neighbors || []) {
140
+ if (! visited .has (neighbor )) {
141
+ queue .push (neighbor );
142
+ const newNeighbor = new Node (neighbor .val , []);
143
+ visited .set (neighbor , newNeighbor );
144
+ }
145
+ const newNode = visited .get (cur );
146
+ newNode .neighbors .push (visited .get (neighbor ));
147
+ }
148
+ }
149
+ return visited .get (node );
150
+ };
151
+ ```
152
+
116
153
### ** ...**
117
154
118
155
```
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for Node.
3
+ * class Node {
4
+ * val: number
5
+ * neighbors: Node[]
6
+ * constructor(val?: number, neighbors?: Node[]) {
7
+ * this.val = (val===undefined ? 0 : val)
8
+ * this.neighbors = (neighbors===undefined ? [] : neighbors)
9
+ * }
10
+ * }
11
+ */
12
+
13
+ function cloneGraph ( node : Node | null ) : Node | null {
14
+ if ( node == null ) return null ;
15
+
16
+ const visited = new Map ( ) ;
17
+ visited . set ( node , new Node ( node . val ) ) ;
18
+ const queue = [ node ] ;
19
+ while ( queue . length ) {
20
+ const cur = queue . shift ( ) ;
21
+ for ( let neighbor of cur . neighbors || [ ] ) {
22
+ if ( ! visited . has ( neighbor ) ) {
23
+ queue . push ( neighbor ) ;
24
+ const newNeighbor = new Node ( neighbor . val , [ ] ) ;
25
+ visited . set ( neighbor , newNeighbor ) ;
26
+ }
27
+ const newNode = visited . get ( cur ) ;
28
+ newNode . neighbors . push ( visited . get ( neighbor ) ) ;
29
+ }
30
+ }
31
+ return visited . get ( node ) ;
32
+ } ;
You can’t perform that action at this time.
0 commit comments