【Leetcode二叉树的修改与构造三】617. 合并二叉树

Leetcode617

1.问题描述

在这里插入图片描述

2.解决方案

解法一:递归

这个思路很简单没什么好说的,就是递归处理两棵树的左右子树
1.首先我都不用管题目,参数有两个指针应该怎么处理不用我多说了吧,两个指针总共四种情况,空不空,不空空,空空,不空不空,都列出来分别处理,那要是带到题目分析那也和简单就是一个空了那直接返回另一个不就是合并了
if(root1== nullptr&&root2== nullptr) return nullptr;
if(root1!= nullptr&&root2== nullptr) return root1;
if(root1== nullptr&&root2!= nullptr) return root2;
2.我是建立了一颗新树其实不建立就用其中一颗也可以,然后递归左右子树就没什么可说的了

class Solution {
public:
    TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
        if(root1== nullptr&&root2== nullptr) return nullptr;
        if(root1!= nullptr&&root2== nullptr) return root1;
        if(root1== nullptr&&root2!= nullptr) return root2;

        TreeNode* root=new TreeNode(root1->val+root2->val);
        root->left= mergeTrees(root1->left,root2->left);
        root->right= mergeTrees(root1->right,root2->right);
        return root;
    }
};


解法二:迭代

迭代的处理类似于101. 对称二叉树 ,就是使用栈或者队列把两棵树的两个结点同时入队,然后同时出队进行比较处理,这我就不给出了,可以回顾一下101. 对称二叉树 这篇博客就懂了!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值