* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param t1 TreeNode类
* @param t2 TreeNode类
* @return TreeNode类
*/
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
// write code here
if(!t1)
return t2;
if(!t2)
return t1;
queue<TreeNode *>q1,q2,q;
TreeNode* head=new TreeNode(t1->val+t2->val);
q1.push(t1);
q2.push(t2);
q.push(head);
while(!q1.empty()&&!q2.empty()){
TreeNode* node=q.front();
TreeNode* node1=q1.front();
TreeNode* node2=q2.front();
q.pop(),q1.pop(),q2.pop();
TreeNode *left1=node1->left,*left2=node2->left,*right1=node1->right,*right2=node2->right;
if(left1||left2){
if(left1&&left2){
TreeNode* left=new TreeNode(left1->val+left2->val);
node->left=left;
q.push(node->left);
q1.push(left1);
q2.push(left2);
}
else if(left1)
node->left=left1;
else if(left2)
node->left=left2;
}
if(right1||right2){
if(right1&&right2){
TreeNode* right=new TreeNode(right1->val+right2->val);
node->right=right;
q.push(node->right);
q1.push(right1);
q2.push(right2);
}
else if(right1)
node->right=right1;
else if(right2)
node->right=right2;
}
}
return head;
}
};