var mergeTrees = function(root1, root2) {
if(root1==null){
return root2
}
if(root2==null){
return root1
}
let q=[]
q.push(root1)
q.push(root2)
while(q.length){
let node1=q.shift()
let node2=q.shift()
node1.val+=node2.val
//左节点都不为空
if(node1.left&&node2.left){
q.push(node1.left)
q.push(node2.left)
}
//右节点都不为空
if(node1.right&&node2.right){
q.push(node1.right)
q.push(node2.right)
}
//node1左节点为空
if(node1.left==null&&node2.left!==null){
node1.left=node2.left
}
//node1右节点为空
if(node1.right==null&&node2.right!==null){
node1.right=node2.right
}
}
//返回的是树1,如果树1为空,则直接把树2的值给树1
return root1
};
以上是层序遍历
以下为递归
var mergeTrees = function(root1, root2) {
return dd(root1,root2)
};
const dd=function(root1,root2){
//退出递归的条件
if(root1==null){
return root2
}
if(root2==null){
return root1
}
//合并
root1.val+=root2.val
//递归左右子节点
root1.left=dd(root1.left,root2.left)
root1.right=dd(root1.right,root2.right)
return root1
}