Merge Two Binary Trees

Merge Two Binary Trees

题目描述:

给定两棵二叉树的头节点,要求将两个树整合后返回新树的头结点。

例子:

具体描述见LeetCode617

解题思路:

本题的思路非常的直接,使用递归的方式来解决问题。其中需要判断是否有空节点的情况和都是非空节点的情况分类处理即可。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
if (!t1 || !t2) return !t1 ? t2 : t1;
else if (t1 && t2){
t1->val += t2->val;
t1->left = mergeTrees(t1->left, t2->left);
t1->right = mergeTrees(t1->right, t2->right);
return t1;
}
}
};