/*
* function TreeNode(x) {
* this.val = x;
* this.left = null;
* this.right = null;
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param t1 TreeNode类
* @param t2 TreeNode类
* @return TreeNode类
*/
function mergeTrees(t1, t2) {
return bfs(t1, t2);
}
function dfs(r1, r2) {
if (!r1 && !r2) {
return null;
}
if (!r1) {
return r2;
}
if (!r2) {
return r1;
}
r1.val += r2.val;
r1.left = dfs(r1.left, r2.left);
r1.right = dfs(r1.right, r2.right);
return r1;
}
function bfs(r1, r2) {
if (!r1 && !r2) {
return null;
}
if (!r1) {
return r2;
}
if (!r2) {
return r1;
}
const queue = [r1, r2];
while (queue.length) {
const n1 = queue.shift();
const n2 = queue.shift();
n1.val += n2.val;
if (n1.left && n2.left) {
queue.push(n1.left, n2.left);
}
if (n1.right && n2.right) {
queue.push(n1.right, n2.right);
}
if (!n1.left && n2.left) {
n1.left = n2.left;
}
if (!n1.right && n2.right) {
n1.right = n2.right;
}
}
return r1;
}
module.exports = {
mergeTrees: mergeTrees,
};