美文网首页
LeetCode 第567题:合并二叉树

LeetCode 第567题:合并二叉树

作者: 放开那个BUG | 来源:发表于2021-06-15 23:33 被阅读0次

1、前言

题目描述

2、思路

合并二叉树这道题,我是完全列出了三种情况,然后按照这三种情况依次处理,到了最后是把所有的修改都放到 t1 上面,也就是在建立树的过程中不修改 t2 的值。

我看题解中也有一种情况也是修改 t2 的值,但是会把 t1 的指针连到 t2 上,也有那种新建节点的,到了最后还是直连节点。所以代码中会给出新建节点和在 t1 上修改的。

3、代码

public class Q617_MergeTrees {

    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
        if(root1 == null && root2 == null){
            return null;
        }
        if(root1 == null || root2 == null){
            return root1 == null ? root2 : root1;
        }

        root1.val += root2.val;
        root1.left = mergeTrees(root1.left, root2.left);
        root1.right = mergeTrees(root1.right, root2.right);

        return root1;
    }

    public TreeNode mergeTrees2(TreeNode root1, TreeNode root2) {
        if(root1 == null && root2 == null){
            return null;
        }

        TreeNode node = new TreeNode();
        if(root1 != null && root2 == null){
            node.val = root1.val;
            node.left = mergeTrees(root1.left, null);
            node.right = mergeTrees(root1.right, null);
        }else if(root1 != null && root2 != null){
            node.val = root1.val + root2.val;
            node.left = mergeTrees(root1.left, root2.left);
            node.right = mergeTrees(root1.right, root2.right);
        }else if(root1 == null && root2 != null){
            node.val = root2.val;
            node.left = mergeTrees(null, root2.left);
            node.right = mergeTrees(null, root2.right);
        }

        return node;
    }
}

相关文章

网友评论

      本文标题:LeetCode 第567题:合并二叉树

      本文链接:https://www.haomeiwen.com/subject/necveltx.html