#include <iostream>
#include <algorithm>
#include "vector"
#include "string"
using namespace std;
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2)
{
TreeNode* node = new TreeNode(0);
if (t1 != NULL&&t2 != NULL)
{
node->val = t1->val + t2->val;
node->left = mergeTrees(t1->left, t2->left);
node->right = mergeTrees(t1->right, t2->right);
}
else if (t1 != NULL&&t2 == NULL)
{
node= t1;
}
else if (t1 == NULL&&t2 != NULL)
{
node = t2;
}
else
{
node = NULL;
}
return node;
};
int main()
{
TreeNode *n1 = new TreeNode(0);
TreeNode *n2 = new TreeNode(0);
TreeNode *n3 = new TreeNode(0);
TreeNode *n4 = new TreeNode(0);
n1->val = 1; n1->left = n2; n1->right = n3;
n2->val = 3; n2->left = n4; n2->right = NULL;
n3->val = 2; n3->left = NULL; n3->right = NULL;
n4->val = 5; n4->left = NULL; n3->right = NULL;
TreeNode *n6 = new TreeNode(0);
TreeNode *n7 = new TreeNode(0);
TreeNode *n8 = new TreeNode(0);
TreeNode *n9 = new TreeNode(0);
TreeNode *n10 = new TreeNode(0);
n6->val = 2; n6->left = n7; n6->right = n8;
n7->val = 1; n7->left = NULL; n7->right = n9;
n8->val = 3; n8->left = NULL; n8->right = n10;
n9->val = 4; n9->left = NULL; n9->right = NULL;
n10->val = 7; n10->left = NULL; n10->right = NULL;
mergeTrees(n1, n6);
//cout << *it << " ";
system("pause");
return 0;
}