题解 | #合并二叉树#

合并二叉树

http://www.nowcoder.com/practice/7298353c24cc42e3bd5f0e0bd3d1d759

基本思路:

从每个对应位置的节点上来看,树t1和t2的相加可以分成以下4种情况:
1、t1和t2的结点皆为空:
不需要相加,同样返回空值即可。
2、t1结点为空,t2结点不为空:
返回结点t2。
3、t1结点不为空,t2结点为空:
返回结点t1。
4、t1和t2的结点都不为空:
先将t2的属性值val加到t1上的val,鉴于t1、t2皆可能存在子树,于是对各自的左右子树分别进行递归操作,最后返回t1。

代码:

public class Solution {
    
    public TreeNode mergeTrees (TreeNode t1, TreeNode t2) {
        //t1和t2的四种情况
        if (t1==null && t2==null)
            return null;
        else if (t1==null && t2!=null)
            return t2;
        else if (t1!=null && t2==null)
            return t1;
        //t1、t2都非空,递归求解,返回t1
        else {
            t1.val += t2.val;
            t1.left = mergeTrees(t1.left, t2.left);
            t1.right = mergeTrees(t1.right, t2.right);
            return t1;
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-23 14:18
点赞 评论 收藏
分享
07-22 13:50
门头沟学院 Java
仁者伍敌:其实能找到就很好了,当然收支能抵
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务