Leetcode 617-合并二叉树

给你两棵二叉树: root1 和 root2 。

想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。

返回合并后的二叉树。

注意: 合并过程必须从两个树的根节点开始。
在这里插入图片描述

题解

找到相同位置的节点然后合并
如果root1则直接返回root2,root2为空则直接返回root1,不要再进入下一层递归,避免出现空指针异常

class Solution {
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {

        TreeNode root=new TreeNode(0);
        
        if(root1!=null&&root2!=null) root.val=root1.val+root2.val;
        else if(root1!=null&&root2==null) return root1;
        else if(root1==null&&root2!=null) return root2;
        else return null;

        root.left=mergeTrees(root1.left,root2.left);
        root.right=mergeTrees(root1.right,root2.right);

        return root;
    }
}

也可以直接把root2得值加在root1上面,返回root1

class Solution {
    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
        //1.边界条件判断
        if(t1==null) return t2;
        else if(t2==null) return t1;
        //2.对当前节点应该做的操作:节点值相加
        else t1.val+=t2.val;
        //3.给当前节点的左节点赋值:对左节点递归进行操作
        t1.left= mergeTrees(t1.left,t2.left);
         //3.给当前节点的右节点赋值:对左节点递归进行操作
        t1.right=mergeTrees(t1.right,t2.right);
        //4.返回根节点
        return t1;
    }
}
错误代码

root1或者root2为空的时候没有直接返回,会进入下一层递归,比如mergeTrees(root1.left,root2.left),这会使得出现空指针异常(null.null)

class Solution {
    public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {

        TreeNode root=new TreeNode(0);
        
        if(root1!=null&&root2!=null) root.val=root1.val+root2.val;
        else if(root1!=null&&root2==null) root.val=root1.val;
        else if(root1==null&&root2!=null) root.val=root2.val;
        else return null;

        root.left=mergeTrees(root1.left,root2.left);
        root.right=mergeTrees(root1.right,root2.right);

        return root;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值