Skip to content

Commit 05e653c

Browse files
committed
feat: add solutions to lc problem: No.1490. Clone N-ary Tree
1 parent a1f45bf commit 05e653c

File tree

6 files changed

+328
-4
lines changed

6 files changed

+328
-4
lines changed

solution/1400-1499/1490.Clone N-ary Tree/README.md

Lines changed: 113 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,27 +50,138 @@ class Node {
5050
<li>节点的总个数在&nbsp;<code>[0,&nbsp;10^4]</code>&nbsp;之间</li>
5151
</ul>
5252

53-
5453
## 解法
5554

5655
<!-- 这里可写通用的实现逻辑 -->
5756

57+
DFS。
58+
5859
<!-- tabs:start -->
5960

6061
### **Python3**
6162

6263
<!-- 这里可写当前语言的特殊实现逻辑 -->
6364

6465
```python
65-
66+
"""
67+
# Definition for a Node.
68+
class Node:
69+
def __init__(self, val=None, children=None):
70+
self.val = val
71+
self.children = children if children is not None else []
72+
"""
73+
74+
class Solution:
75+
def cloneTree(self, root: 'Node') -> 'Node':
76+
if root:
77+
node = Node(val=root.val)
78+
node.children = [self.cloneTree(child) for child in root.children]
79+
return node
6680
```
6781

6882
### **Java**
6983

7084
<!-- 这里可写当前语言的特殊实现逻辑 -->
7185

7286
```java
87+
/*
88+
// Definition for a Node.
89+
class Node {
90+
public int val;
91+
public List<Node> children;
92+
93+
94+
public Node() {
95+
children = new ArrayList<Node>();
96+
}
97+
98+
public Node(int _val) {
99+
val = _val;
100+
children = new ArrayList<Node>();
101+
}
102+
103+
public Node(int _val,ArrayList<Node> _children) {
104+
val = _val;
105+
children = _children;
106+
}
107+
};
108+
*/
109+
110+
class Solution {
111+
public Node cloneTree(Node root) {
112+
if (root == null) {
113+
return null;
114+
}
115+
Node node = new Node(root.val);
116+
for (Node child : root.children) {
117+
node.children.add(cloneTree(child));
118+
}
119+
return node;
120+
}
121+
}
122+
```
123+
124+
### **C++**
125+
126+
```cpp
127+
/*
128+
// Definition for a Node.
129+
class Node {
130+
public:
131+
int val;
132+
vector<Node*> children;
133+
134+
Node() {}
135+
136+
Node(int _val) {
137+
val = _val;
138+
}
139+
140+
Node(int _val, vector<Node*> _children) {
141+
val = _val;
142+
children = _children;
143+
}
144+
};
145+
*/
146+
147+
class Solution {
148+
public:
149+
Node* cloneTree(Node* root) {
150+
if (root == nullptr) {
151+
return nullptr;
152+
}
153+
Node* node = new Node(root->val);
154+
vector<Node*> children;
155+
for (Node* node : root->children) {
156+
children.push_back(cloneTree(node));
157+
}
158+
node->children = children;
159+
return node;
160+
}
161+
};
162+
```
73163
164+
### **Go**
165+
166+
```go
167+
/**
168+
* Definition for a Node.
169+
* type Node struct {
170+
* Val int
171+
* Children []*Node
172+
* }
173+
*/
174+
175+
func cloneTree(root *Node) *Node {
176+
if root == nil {
177+
return nil
178+
}
179+
node := &Node{Val: root.Val}
180+
for _, child := range root.Children {
181+
node.Children = append(node.Children, cloneTree(child))
182+
}
183+
return node
184+
}
74185
```
75186

76187
### **...**

solution/1400-1499/1490.Clone N-ary Tree/README_EN.md

Lines changed: 113 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,132 @@ class Node {
4646
<li>The total number of nodes is between <code>[0,&nbsp;10^4]</code>.</li>
4747
</ul>
4848

49-
5049
## Solutions
5150

51+
DFS.
52+
5253
<!-- tabs:start -->
5354

5455
### **Python3**
5556

5657
```python
57-
58+
"""
59+
# Definition for a Node.
60+
class Node:
61+
def __init__(self, val=None, children=None):
62+
self.val = val
63+
self.children = children if children is not None else []
64+
"""
65+
66+
class Solution:
67+
def cloneTree(self, root: 'Node') -> 'Node':
68+
if root:
69+
node = Node(val=root.val)
70+
node.children = [self.cloneTree(child) for child in root.children]
71+
return node
5872
```
5973

6074
### **Java**
6175

6276
```java
77+
/*
78+
// Definition for a Node.
79+
class Node {
80+
public int val;
81+
public List<Node> children;
82+
83+
84+
public Node() {
85+
children = new ArrayList<Node>();
86+
}
87+
88+
public Node(int _val) {
89+
val = _val;
90+
children = new ArrayList<Node>();
91+
}
92+
93+
public Node(int _val,ArrayList<Node> _children) {
94+
val = _val;
95+
children = _children;
96+
}
97+
};
98+
*/
99+
100+
class Solution {
101+
public Node cloneTree(Node root) {
102+
if (root == null) {
103+
return null;
104+
}
105+
Node node = new Node(root.val);
106+
for (Node child : root.children) {
107+
node.children.add(cloneTree(child));
108+
}
109+
return node;
110+
}
111+
}
112+
```
113+
114+
### **C++**
115+
116+
```cpp
117+
/*
118+
// Definition for a Node.
119+
class Node {
120+
public:
121+
int val;
122+
vector<Node*> children;
123+
124+
Node() {}
125+
126+
Node(int _val) {
127+
val = _val;
128+
}
129+
130+
Node(int _val, vector<Node*> _children) {
131+
val = _val;
132+
children = _children;
133+
}
134+
};
135+
*/
136+
137+
class Solution {
138+
public:
139+
Node* cloneTree(Node* root) {
140+
if (root == nullptr) {
141+
return nullptr;
142+
}
143+
Node* node = new Node(root->val);
144+
vector<Node*> children;
145+
for (Node* node : root->children) {
146+
children.push_back(cloneTree(node));
147+
}
148+
node->children = children;
149+
return node;
150+
}
151+
};
152+
```
63153
154+
### **Go**
155+
156+
```go
157+
/**
158+
* Definition for a Node.
159+
* type Node struct {
160+
* Val int
161+
* Children []*Node
162+
* }
163+
*/
164+
165+
func cloneTree(root *Node) *Node {
166+
if root == nil {
167+
return nil
168+
}
169+
node := &Node{Val: root.Val}
170+
for _, child := range root.Children {
171+
node.Children = append(node.Children, cloneTree(child))
172+
}
173+
return node
174+
}
64175
```
65176

66177
### **...**
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
// Definition for a Node.
3+
class Node {
4+
public:
5+
int val;
6+
vector<Node*> children;
7+
8+
Node() {}
9+
10+
Node(int _val) {
11+
val = _val;
12+
}
13+
14+
Node(int _val, vector<Node*> _children) {
15+
val = _val;
16+
children = _children;
17+
}
18+
};
19+
*/
20+
21+
class Solution {
22+
public:
23+
Node* cloneTree(Node* root) {
24+
if (root == nullptr) {
25+
return nullptr;
26+
}
27+
Node* node = new Node(root->val);
28+
vector<Node*> children;
29+
for (Node* node : root->children) {
30+
children.push_back(cloneTree(node));
31+
}
32+
node->children = children;
33+
return node;
34+
}
35+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/**
2+
* Definition for a Node.
3+
* type Node struct {
4+
* Val int
5+
* Children []*Node
6+
* }
7+
*/
8+
9+
func cloneTree(root *Node) *Node {
10+
if root == nil {
11+
return nil
12+
}
13+
node := &Node{Val: root.Val}
14+
for _, child := range root.Children {
15+
node.Children = append(node.Children, cloneTree(child))
16+
}
17+
return node
18+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/*
2+
// Definition for a Node.
3+
class Node {
4+
public int val;
5+
public List<Node> children;
6+
7+
8+
public Node() {
9+
children = new ArrayList<Node>();
10+
}
11+
12+
public Node(int _val) {
13+
val = _val;
14+
children = new ArrayList<Node>();
15+
}
16+
17+
public Node(int _val,ArrayList<Node> _children) {
18+
val = _val;
19+
children = _children;
20+
}
21+
};
22+
*/
23+
24+
class Solution {
25+
public Node cloneTree(Node root) {
26+
if (root == null) {
27+
return null;
28+
}
29+
Node node = new Node(root.val);
30+
for (Node child : root.children) {
31+
node.children.add(cloneTree(child));
32+
}
33+
return node;
34+
}
35+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""
2+
# Definition for a Node.
3+
class Node:
4+
def __init__(self, val=None, children=None):
5+
self.val = val
6+
self.children = children if children is not None else []
7+
"""
8+
9+
class Solution:
10+
def cloneTree(self, root: 'Node') -> 'Node':
11+
if root:
12+
node = Node(val=root.val)
13+
node.children = [self.cloneTree(child) for child in root.children]
14+
return node

0 commit comments

Comments
 (0)