算法题32:合并二叉树

该算法题描述了如何合并两个二叉树,通过前序遍历的方式,对根节点的值进行相加,并递归地处理左子树和右子树。如果某棵树为空,则使用另一棵树。最后创建新的二叉树节点作为结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

算法题32:合并二叉树

思路

  • step 1:首先判断t1与t2是否为空,若为则用另一个代替,若都为空,返回的值也是空。
  • step 2:然后依据前序遍历的特点,优先访问根节点,将两个根点的值相加创建到新树中。
  • step 3:两棵树再依次同步进入左子树和右子树。

代码

TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
    // write code here
    //两棵树同时遍历
    //若只有一个节点返回另一个,两个都为NULL自然返回NULL
    if (t1 == NULL)
        return t2;
    if (t2 == NULL)
        return t1;
    //根左右的方式递归
    TreeNode* head = new TreeNode(t1->val + t2->val);
    head->left = mergeTrees(t1->left, t2->left);
    head->right = mergeTrees(t1->right, t2->right);
    return head;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值