
解题思路:递归解决
递归结束条件:传入的两个结点均为叶子结点,或者传入的只有一个结点存在
将root1结点作为合并过后的新树
struct TreeNode* mergeTrees(struct TreeNode* root1, struct TreeNode* root2){
if(!root1 && !root2)
return NULL;
if(!root1 && root2)
return root2;
if(root1 && !root2)
return root1;
// 1.若两个结点都存在,合并他们的值
if(root1 && root2)
root1->val += root2->val;
// 2.若一棵树没有另一棵树对应的子树,则不必进入循环修改
if(root1->left && root2->left)
mergeTrees(root1->left, root2->left);
if(root1->right && root2->right)
mergeTrees(root1->right, root2->right);
// 3.判断它们的左右孩子情况。若root2有的孩子root1没有,将root2的孩子复制给root1
if(!root1->left && root2->left)
root1->left = root2->left;
if(!root1->right && root2->right)
root1->right = root2->right;
// 4.返回root1
return root1;
}
