|
43 | 43 | <!-- 这里可写当前语言的特殊实现逻辑 -->
|
44 | 44 |
|
45 | 45 | ```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 |
47 | 62 | ```
|
48 | 63 |
|
49 | 64 | ### **Java**
|
50 | 65 |
|
51 | 66 | <!-- 这里可写当前语言的特殊实现逻辑 -->
|
52 | 67 |
|
53 | 68 | ```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++** |
54 | 101 |
|
| 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 | +}; |
55 | 129 | ```
|
56 | 130 |
|
57 | 131 | ### **Go**
|
|
65 | 139 | * Right *TreeNode
|
66 | 140 | * }
|
67 | 141 | */
|
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 |
79 | 153 | }
|
80 |
| - |
81 |
| - |
82 | 154 | ```
|
83 | 155 |
|
84 | 156 | <!-- tabs:end -->
|
0 commit comments