Skip to content

Commit c0c788b

Browse files
committed
feat: add solutions to lc problem: No.0617. Merge Two Binary Trees
1 parent 5f4ab7e commit c0c788b

File tree

6 files changed

+258
-36
lines changed

6 files changed

+258
-36
lines changed

solution/0600-0699/0617.Merge Two Binary Trees/README.md

+86-14
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,89 @@
4343
<!-- 这里可写当前语言的特殊实现逻辑 -->
4444

4545
```python
46-
46+
# Definition for a binary tree node.
47+
# class TreeNode:
48+
# def __init__(self, val=0, left=None, right=None):
49+
# self.val = val
50+
# self.left = left
51+
# self.right = right
52+
class Solution:
53+
def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode:
54+
if root1 is None:
55+
return root2
56+
if root2 is None:
57+
return root1
58+
node = TreeNode(root1.val + root2.val)
59+
node.left = self.mergeTrees(root1.left, root2.left)
60+
node.right = self.mergeTrees(root1.right, root2.right)
61+
return node
4762
```
4863

4964
### **Java**
5065

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

5368
```java
69+
/**
70+
* Definition for a binary tree node.
71+
* public class TreeNode {
72+
* int val;
73+
* TreeNode left;
74+
* TreeNode right;
75+
* TreeNode() {}
76+
* TreeNode(int val) { this.val = val; }
77+
* TreeNode(int val, TreeNode left, TreeNode right) {
78+
* this.val = val;
79+
* this.left = left;
80+
* this.right = right;
81+
* }
82+
* }
83+
*/
84+
class Solution {
85+
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
86+
if (root1 == null) {
87+
return root2;
88+
}
89+
if (root2 == null) {
90+
return root1;
91+
}
92+
TreeNode node = new TreeNode(root1.val + root2.val);
93+
node.left = mergeTrees(root1.left, root2.left);
94+
node.right = mergeTrees(root1.right, root2.right);
95+
return node;
96+
}
97+
}
98+
```
99+
100+
### **C++**
54101

102+
```cpp
103+
/**
104+
* Definition for a binary tree node.
105+
* struct TreeNode {
106+
* int val;
107+
* TreeNode *left;
108+
* TreeNode *right;
109+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
110+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
111+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
112+
* };
113+
*/
114+
class Solution {
115+
public:
116+
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
117+
if (root1 == nullptr) {
118+
return root2;
119+
}
120+
if (root2 == nullptr) {
121+
return root1;
122+
}
123+
TreeNode *node = new TreeNode(root1->val + root2->val);
124+
node->left = mergeTrees(root1->left, root2->left);
125+
node->right = mergeTrees(root1->right, root2->right);
126+
return node;
127+
}
128+
};
55129
```
56130
57131
### **Go**
@@ -65,20 +139,18 @@
65139
* Right *TreeNode
66140
* }
67141
*/
68-
func mergeTrees(t1 *TreeNode, t2 *TreeNode) *TreeNode {
69-
if t1 == nil {
70-
return t2
71-
}
72-
if t2 == nil {
73-
return t1
74-
}
75-
t1.Val += t2.Val
76-
t1.Left = mergeTrees(t1.Left, t2.Left)
77-
t1.Right = mergeTrees(t1.Right, t2.Right)
78-
return t1
142+
func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {
143+
if root1 == nil {
144+
return root2
145+
}
146+
if root2 == nil {
147+
return root1
148+
}
149+
node := &TreeNode{Val: root1.Val + root2.Val}
150+
node.Left = mergeTrees(root1.Left, root2.Left)
151+
node.Right = mergeTrees(root1.Right, root2.Right)
152+
return node
79153
}
80-
81-
82154
```
83155

84156
<!-- tabs:end -->

solution/0600-0699/0617.Merge Two Binary Trees/README_EN.md

+100-1
Original file line numberDiff line numberDiff line change
@@ -43,13 +43,112 @@
4343
### **Python3**
4444

4545
```python
46-
46+
# Definition for a binary tree node.
47+
# class TreeNode:
48+
# def __init__(self, val=0, left=None, right=None):
49+
# self.val = val
50+
# self.left = left
51+
# self.right = right
52+
class Solution:
53+
def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode:
54+
if root1 is None:
55+
return root2
56+
if root2 is None:
57+
return root1
58+
node = TreeNode(root1.val + root2.val)
59+
node.left = self.mergeTrees(root1.left, root2.left)
60+
node.right = self.mergeTrees(root1.right, root2.right)
61+
return node
4762
```
4863

4964
### **Java**
5065

5166
```java
67+
/**
68+
* Definition for a binary tree node.
69+
* public class TreeNode {
70+
* int val;
71+
* TreeNode left;
72+
* TreeNode right;
73+
* TreeNode() {}
74+
* TreeNode(int val) { this.val = val; }
75+
* TreeNode(int val, TreeNode left, TreeNode right) {
76+
* this.val = val;
77+
* this.left = left;
78+
* this.right = right;
79+
* }
80+
* }
81+
*/
82+
class Solution {
83+
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
84+
if (root1 == null) {
85+
return root2;
86+
}
87+
if (root2 == null) {
88+
return root1;
89+
}
90+
TreeNode node = new TreeNode(root1.val + root2.val);
91+
node.left = mergeTrees(root1.left, root2.left);
92+
node.right = mergeTrees(root1.right, root2.right);
93+
return node;
94+
}
95+
}
96+
```
97+
98+
### **C++**
99+
100+
```cpp
101+
/**
102+
* Definition for a binary tree node.
103+
* struct TreeNode {
104+
* int val;
105+
* TreeNode *left;
106+
* TreeNode *right;
107+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
108+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
109+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
110+
* };
111+
*/
112+
class Solution {
113+
public:
114+
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
115+
if (root1 == nullptr) {
116+
return root2;
117+
}
118+
if (root2 == nullptr) {
119+
return root1;
120+
}
121+
TreeNode *node = new TreeNode(root1->val + root2->val);
122+
node->left = mergeTrees(root1->left, root2->left);
123+
node->right = mergeTrees(root1->right, root2->right);
124+
return node;
125+
}
126+
};
127+
```
52128
129+
### **Go**
130+
131+
```go
132+
/**
133+
* Definition for a binary tree node.
134+
* type TreeNode struct {
135+
* Val int
136+
* Left *TreeNode
137+
* Right *TreeNode
138+
* }
139+
*/
140+
func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {
141+
if root1 == nil {
142+
return root2
143+
}
144+
if root2 == nil {
145+
return root1
146+
}
147+
node := &TreeNode{Val: root1.Val + root2.Val}
148+
node.Left = mergeTrees(root1.Left, root2.Left)
149+
node.Right = mergeTrees(root1.Right, root2.Right)
150+
return node
151+
}
53152
```
54153

55154
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* struct TreeNode {
4+
* int val;
5+
* TreeNode *left;
6+
* TreeNode *right;
7+
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
8+
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
9+
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
10+
* };
11+
*/
12+
class Solution {
13+
public:
14+
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
15+
if (root1 == nullptr) {
16+
return root2;
17+
}
18+
if (root2 == nullptr) {
19+
return root1;
20+
}
21+
TreeNode *node = new TreeNode(root1->val + root2->val);
22+
node->left = mergeTrees(root1->left, root2->left);
23+
node->right = mergeTrees(root1->right, root2->right);
24+
return node;
25+
}
26+
};

solution/0600-0699/0617.Merge Two Binary Trees/Solution.go

+12-12
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@
66
* Right *TreeNode
77
* }
88
*/
9-
func mergeTrees(t1 *TreeNode, t2 *TreeNode) *TreeNode {
10-
if t1 == nil {
11-
return t2
12-
}
13-
if t2 == nil {
14-
return t1
15-
}
16-
t1.Val += t2.Val
17-
t1.Left = mergeTrees(t1.Left, t2.Left)
18-
t1.Right = mergeTrees(t1.Right, t2.Right)
19-
return t1
20-
}
9+
func mergeTrees(root1 *TreeNode, root2 *TreeNode) *TreeNode {
10+
if root1 == nil {
11+
return root2
12+
}
13+
if root2 == nil {
14+
return root1
15+
}
16+
node := &TreeNode{Val: root1.Val + root2.Val}
17+
node.Left = mergeTrees(root1.Left, root2.Left)
18+
node.Right = mergeTrees(root1.Right, root2.Right)
19+
return node
20+
}

solution/0600-0699/0617.Merge Two Binary Trees/Solution.java

+18-9
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,26 @@
44
* int val;
55
* TreeNode left;
66
* TreeNode right;
7-
* TreeNode(int x) { val = x; }
7+
* TreeNode() {}
8+
* TreeNode(int val) { this.val = val; }
9+
* TreeNode(int val, TreeNode left, TreeNode right) {
10+
* this.val = val;
11+
* this.left = left;
12+
* this.right = right;
13+
* }
814
* }
915
*/
1016
class Solution {
11-
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
12-
if (t1 == null) return t2;
13-
if (t2 == null) return t1;
14-
15-
t1.val = t1.val + t2.val;
16-
t1.left = mergeTrees(t1.left, t2.left);
17-
t1.right = mergeTrees(t1.right, t2.right);
18-
return t1;
17+
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
18+
if (root1 == null) {
19+
return root2;
20+
}
21+
if (root2 == null) {
22+
return root1;
23+
}
24+
TreeNode node = new TreeNode(root1.val + root2.val);
25+
node.left = mergeTrees(root1.left, root2.left);
26+
node.right = mergeTrees(root1.right, root2.right);
27+
return node;
1928
}
2029
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode:
3+
# def __init__(self, val=0, left=None, right=None):
4+
# self.val = val
5+
# self.left = left
6+
# self.right = right
7+
class Solution:
8+
def mergeTrees(self, root1: TreeNode, root2: TreeNode) -> TreeNode:
9+
if root1 is None:
10+
return root2
11+
if root2 is None:
12+
return root1
13+
node = TreeNode(root1.val + root2.val)
14+
node.left = self.mergeTrees(root1.left, root2.left)
15+
node.right = self.mergeTrees(root1.right, root2.right)
16+
return node

0 commit comments

Comments
 (0)