给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。
你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。
public TreeNode mergeTrees1(TreeNode t1, TreeNode t2) {
if (t1 == null || t2 == null) {
return t1 == null ? t2 : t1;
}
LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(t1);
queue.add(t2);
while (queue.size() > 0) {
TreeNode temp1 = queue.removeFirst();
TreeNode temp2 = queue.removeFirst();
temp1.val += temp2.val;
if (temp1.left != null && temp2.left != null) {
queue.add(temp1.left);
queue.add(temp2.left);
} else if (temp1.left == null) {
temp1.left = temp2.left;
}
if (temp1.right != null && temp2.right != null) {
queue.add(temp1.right);
queue.add(temp2.right);
} else if (temp1.right == null) {
temp1.right = temp2.right;
}
}
return t1;
}