Skip to content

Commit 30629d5

Browse files
authored
feat: add typescript solution to lc problem: No.0133.Clone Graph (doocs#587)
1 parent cca8a3e commit 30629d5

File tree

3 files changed

+106
-0
lines changed

3 files changed

+106
-0
lines changed

solution/0100-0199/0133.Clone Graph/README.md

+37
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,43 @@
9999

100100
```
101101

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+
102139
### **...**
103140

104141
```

solution/0100-0199/0133.Clone Graph/README_EN.md

+37
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,43 @@ class Node {
113113

114114
```
115115

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+
116153
### **...**
117154

118155
```
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
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+
};

0 commit comments

Comments
 (0)