本题需要运用树的递归特性求解:当 root1 和 root2 均为空时,返回空;当 root1 和 root2 有一个为空时,返回非空的那个节点;当 root1 和 root2 均不空时,返回合并后的结点。之后在分别递归左右子树。
class Solution {
public:
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
//返回root1与root2非空结点、均空时返回空
if(root1 == nullptr) return root2;
if(root2 == nullptr) return root1;
root1->val += root2->val; //合并结点
root1->left = mergeTrees(root1->left, root2->left);
root1->right = mergeTrees(root1->right, root2->right);
return root1;
}
};