class Solution {
public:
    TreeNode* mergeTrees(TreeNode* a, TreeNode* b) {
			  // 这两条语句我学到了,我一开始各种分类讨论很麻烦
        if (!a) return b;
        if (!b) return a;
        
        // a <-- b
        a->val += b->val;
        a->left = mergeTrees(a->left, b->left);
        a->right = mergeTrees(a->right, b->right);
        return a;
        
        // 先中后序都可以,只要能够遍历树,处理所有节点后都能得到结果
    }
};
class Solution {
public:
    TreeNode* mergeTrees(TreeNode* a, TreeNode* b) {
        if (!a) return b;
        if (!b) return a;
        TreeNode* root = new TreeNode(a->val + b->val);
        root->left = mergeTrees(a->left, b->left);
        root->right = mergeTrees(a->right, b->right);
        return root;
    }
};