美文网首页
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