@@ -46,21 +46,132 @@ class Node {
46
46
<li>The total number of nodes is between <code>[0, 10^4]</code>.</li>
47
47
</ul >
48
48
49
-
50
49
## Solutions
51
50
51
+ DFS.
52
+
52
53
<!-- tabs:start -->
53
54
54
55
### ** Python3**
55
56
56
57
``` 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
58
72
```
59
73
60
74
### ** Java**
61
75
62
76
``` 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
+ ```
63
153
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
+ }
64
175
```
65
176
66
177
### ** ...**
0 commit comments