合并二叉树
给定两个二叉树,并想象当你把其中一个覆盖另一个时,两个树的一些节点是重叠的,而另一个没有。
您需要将它们合并成一个新的二叉树。合并规则是如果两个节点重叠,则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; } }