题目描述
你需要两个二叉树合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。
示例:
输入:
Tree 1 Tree 2
1 2
/ \ / \
3 2 1 3
/ \ \
5 4 7
输出:
合并后的树:
3
/ \
4 5
/ \ \
5 4 7
参考代码
新建树,简单题。
/**
* 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* tree1, TreeNode* tree2) {
if(tree1 == nullptr && tree2 == nullptr)
return nullptr;
if(tree1 == nullptr)
return tree2;
if(tree2 == nullptr)
return tree1;
int val = tree1->val + tree2->val;
TreeNode* pNode = new TreeNode(val);
pNode->left = mergeTrees(tree1->left, tree2->left);
pNode->right = mergeTrees(tree1->right, tree2->right);
return pNode;
}
};