LeetCode每日一题:合并二叉树(No.617)

866 阅读1分钟

题目:合并二叉树


给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。
你需要将他们合并为一个新的二叉树。
合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。

示例:


  输入: 
        Tree 1                       Tree 2                  
            1                         2                             
           / \                       / \                            
          3   2                     1   3                        
         /                           \   \                      
       5                             4   7                  
  输出: 
        合并后的树:
             3
            / \
    	   4   5
          / \   \ 
         5   4   7

思考:


采用递归方法,如果传入的两个节点都不为空就将两节点的val相加创建新节点。
t1节点为空将t2节点返回,t2节点为空就返回t1节点。
然后两次递归调用传入两棵树的左节点和右节点。

实现:


class Solution {
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
     if (t1 == null){
       return t2;
    }
    if (t2 == null){
        return t1;
    }
    TreeNode newNode = new TreeNode(t1.val+t2.val);
    newNode.left  = mergeTrees(t1.left, t2.left);
    newNode.right  = mergeTrees(t1.right, t2.right);
    return newNode;
}
}