合并二叉树

给定两个二叉树,并想象当你把其中一个覆盖另一个时,两个树的一些节点是重叠的,而另一个没有。

您需要将它们合并成一个新的二叉树。合并规则是如果两个节点重叠,则sum节点值作为合并节点的新值。否则,NOT空节点将被用作新树的节点。

示例1:

  

Input: 
	Tree 1                     Tree 2                  
          1                         2                             
         / \                       / \                            
        3   2                     1   3                        
       /                           \   \                      
      5                             4   7                  
Output: 
Merged tree:
	     3
	    / \
	   4   5
	  / \   \ 
	 5   4   7
思路:找出Tree1,Tree2同一个结点,两个结点的键值相加,生成一个新的结点,该结点的左子树指向下一次调用该函数的生成的结点,同理右子树也是,传递的参数分别为两个结点树该结点的左子树和右子树即可。

/*
* Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
*/
class Solution {
    public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
        if(t1==null&&t2==null) return null;   //全空 return
     int val = (t1==null?0:t1.val)+(t2==null? 0: t2.val);
TreeNode newNode = new TreeNode(val);
newNode.left = mergeTrees(t1==null? null : t1.left,t2==null? null:t2.left);
newNode.right = mergeTrees(t1==null?null : t1.right,t2==null? null:t2.right);
return newNode; } }

  



posted @ 2017-10-10 21:30  im.lhc  阅读(266)  评论(0编辑  收藏  举报