617. Merge Two Binary Trees
class Solution {
private:
void helper(TreeNode *t1, TreeNode *t2, TreeNode **root) {
if (!t1 && !t2) return;
int lhs = t1? t1->val: 0, rhs = t2? t2->val: 0;
*root = new TreeNode(lhs + rhs);
TreeNode *t1left = nullptr, *t1right = nullptr;
if (t1) t1left = t1->left, t1right = t1->right;
TreeNode *t2left = nullptr, *t2right = nullptr;
if (t2) t2left = t2->left, t2right = t2->right;
helper( t1left , t2left , &((*root)->left ) );
helper( t1right, t2right, &((*root)->right) );
}
public:
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
TreeNode *ret = nullptr;
TreeNode **root = &ret;
helper(t1, t2, root);
return ret;
}
};