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

浙公网安备 33010602011771号