效率很(最)低但是一次ac了
// 617. Merge Two Binary Trees
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
if (t1 != NULL && t2 != NULL)
{
t1->val = t1->val + t2->val;
t1->left = mergeTrees(t1->left, t2->left);
t1->right = mergeTrees(t1->right, t2->right);
return t1;
}
if (t1 != NULL && t2 == NULL)
{
t1->left = mergeTrees(t1->left, NULL);
t1->right = mergeTrees(t1->right, NULL);
return t1;
}
if (t2 != NULL && t1 == NULL)
{
t2->left = mergeTrees(t2->left, NULL);
t2->right = mergeTrees(t2->right, NULL);
return t2;
}
if (t1 == NULL && t2 == NULL)
{
return NULL;
}
}
重构版本:
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
if ( t1 && t2 ) {
TreeNode * root = new TreeNode(t1->val + t2->val);
root->left = mergeTrees(t1->left, t2->left);
root->right = mergeTrees(t1->right, t2->right);
return root;
} else {
return t1 ? t1 : t2;
}
}