/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param t1 TreeNode类
* @param t2 TreeNode类
* @return TreeNode类
*/
//递归版本
//该递归函数采用前序遍历的方式同时遍历两棵树,并且完成将root2合并到root1上
//递归函数的返回值是最终合并的头结点
TreeNode* process(TreeNode*root1,TreeNode*root2){
//base case
if(root1==NULL&&root2==NULL)
return NULL;
else if(root1==NULL&&root2!=NULL){//此时需要返回root2因为要把root2的头接到root1上
return root2;
}
else if(root1!=NULL&&root2==NULL){//此时直接返回root1即可
return root1;
}
//说明都不为空,按照题意此时需要把两个节点的值相加赋给root1
root1->val=root1->val+root2->val;
root1->left=process(root1->left, root2->left);
root1->right=process(root1->right, root2->right);
return root1;
}
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
// write code here
TreeNode* head=process(t1, t2);
return head;
}
};
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
public:
/**
*
* @param t1 TreeNode类
* @param t2 TreeNode类
* @return TreeNode类
*/
//递归版本
//该递归函数采用前序遍历的方式同时遍历两棵树,并且完成将root2合并到root1上
//递归函数的返回值是最终合并的头结点
TreeNode* process(TreeNode*root1,TreeNode*root2){
//base case
if(root1==NULL&&root2==NULL)
return NULL;
else if(root1==NULL&&root2!=NULL){//此时需要返回root2因为要把root2的头接到root1上
return root2;
}
else if(root1!=NULL&&root2==NULL){//此时直接返回root1即可
return root1;
}
//说明都不为空,按照题意此时需要把两个节点的值相加赋给root1
root1->val=root1->val+root2->val;
root1->left=process(root1->left, root2->left);
root1->right=process(root1->right, root2->right);
return root1;
}
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
// write code here
TreeNode* head=process(t1, t2);
return head;
}
};