/**
 * struct TreeNode {
 *	int val;
 *	struct TreeNode *left;
 *	struct TreeNode *right;
 * };
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */

/**
 * 
 * @param t1 TreeNode类 
 * @param t2 TreeNode类 
 * @return TreeNode类
 */
struct TreeNode* mergeTrees(struct TreeNode* t1, struct TreeNode* t2 ) {
    // write code here
    //如果t1是空,t2不是空,则要传回t2
    if(t1==NULL && t2!=NULL){
        return t2;
    }
    //如果t1不是空,t2是空,传回t1
    if(t1!=NULL && t2==NULL){
        return t1;
    }
    //如果两个都是空,传回t1即可
    if(t1==NULL&& t2==NULL){
        return t1;
    }
    //排除以上三种情况后,t1.t2都有值,则t2的值加到t1上
    t1->val+=t2->val;
    //递归处理t1的左与t2的左,t1的右与t2的右
    t1->left=mergeTrees(t1->left,t2->left);
    t1->right=mergeTrees(t1->right, t2->right);
    
    //最终返回的是t1,因为我们把值加到t1上
    return t1;
}