效率很(最)低但是一次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;
}
}
二叉树合并算法
本文介绍了一种合并两棵二叉树的算法实现。通过递归方式,将两棵树对应节点的值相加,并合并左右子树。文章提供了两种版本的代码实现,包括直接修改原树和创建新树的方法。
403

被折叠的 条评论
为什么被折叠?



