本题需要运用树的递归特性求解:当 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; } };