Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 86 additions & 14 deletions
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‎

Lines changed: 100 additions & 1 deletion
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
### **...**
Lines changed: 26 additions & 0 deletions
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‎

Lines changed: 12 additions & 12 deletions
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‎

Lines changed: 18 additions & 9 deletions
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
}
Lines changed: 16 additions & 0 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /