二叉树|617.合并二叉树

力扣题目链接

class Solution {
public:
    TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
        if (t1 == NULL) return t2;
        if (t2 == NULL) return t1;
        // 重新定义新的节点,不修改原有两个树的结构
        TreeNode* root = new TreeNode(0);
        root->val = t1->val + t2->val;
        root->left = mergeTrees(t1->left, t2->left);
        root->right = mergeTrees(t1->right, t2->right);
        return root;
    }
};

这题就把两个二叉树节点相加就好了。

代码随想录 (programmercarl.com)

递归

二叉树使用递归,就要想使用前中后哪种遍历方式?

本题使用哪种遍历都是可以的!

我们下面以前序遍历为例。

动画如下:

617.合并二叉树

那么我们来按照递归三部曲来解决:

  1. 确定递归函数的参数和返回值:

首先要合入两个二叉树,那么参数至少是要传入两个二叉树的根节点,返回值就是合并之后二叉树的根节点。

代码如下:

TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {

  1. 确定终止条件:

因为是传入了两个树,那么就有两个树遍历的节点t1 和 t2,如果t1 == NULL 了,两个树合并就应该是 t2 了(如果t2也为NULL也无所谓,合并之后就是NULL)。

反过来如果t2 == NULL,那么两个数合并就是t1(如果t1也为NULL也无所谓,合并之后就是NULL)。

代码如下:

if (t1 == NULL) return t2; // 如果t1为空,合并之后就应该是t2
if (t2 == NULL) return t1; // 如果t2为空,合并之后就应该是t1

2.确定单层递归的逻辑:

单层递归的逻辑就比较好写了,这里我们重复利用一下t1这个树,t1就是合并之后树的根节点(就是修改了原来树的结构)。

那么单层递归中,就要把两棵树的元素加到一起。

t1->val += t2->val;

接下来t1 的左子树是:合并 t1左子树 t2左子树之后的左子树。

t1 的右子树:是 合并 t1右子树 t2右子树之后的右子树。

最终t1就是合并之后的根节点。

代码如下:

t1->left = mergeTrees(t1->left, t2->left);
t1->right = mergeTrees(t1->right, t2->right);
return t1;

自己的理解与思路: 

这题是比较好理解的,运用好节点相加还有递归。

自己写在第19行时还出现了一点小问题。 

相关推荐

  1. 617. 合并

    2024-03-28 15:32:01       57 阅读
  2. 合并(力扣617

    2024-03-28 15:32:01       30 阅读
  3. [力扣题解] 617. 合并

    2024-03-28 15:32:01       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 15:32:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 15:32:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 15:32:01       82 阅读
  4. Python语言-面向对象

    2024-03-28 15:32:01       91 阅读

热门阅读

  1. Element-UI中el-cascader级联选择器获取label值

    2024-03-28 15:32:01       42 阅读
  2. Bean对象拷贝工具封装

    2024-03-28 15:32:01       40 阅读
  3. 若依分离版 —引入echart连接Springboot后端

    2024-03-28 15:32:01       42 阅读
  4. openGauss的索引组织表

    2024-03-28 15:32:01       40 阅读
  5. pytorch常用的模块函数汇总(2)

    2024-03-28 15:32:01       37 阅读