//第一种情况,两棵都是空树,合并仍为空 //第二种情况,第一棵树为空,第二棵树不为空,那么空的位置就用第二棵树的结点代替 //第三种情况,第一棵树不为空,第二棵树为空,那么没有影响, //第四种情况,两棵树都不为空,那么就把对应结点的值相加 // 然后递归判断左子树,再递归判断右子树 //注意:因为最后返回t1,所以每次return都是t1的结点 struct TreeNode* mergeTrees(struct TreeNode* t1, struct TreeNode* t2 ) { if(t1 == NULL && t2 == NULL) return NULL; if(t1 == NULL && t2 != NULL) return t2; if(t1 != NULL && t2 == NULL) return t1; t1->val = t1->val + t2->val; t1->left = mergeTrees(t1->left, t2->left); t1->right = mergeTrees(t1->right, t2->right); return t1; }