使用层次遍历
// class Solution {
// public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
// if(root1 == null && root2 == null) return null;
// if(root1!=null&&root2==null) return root1;
// if(root2!=null&&root2==null) return root2;
// return dfs(root1,root2);
// }
// //遍历整颗树
// public TreeNode dfs(TreeNode root1,TreeNode root2){
// if(root1==null&& root2==null) return null;
// if(root1!=null && root2==null) {
// return root1;
// }
// if(root1==null && root2!=null){
// return root2;
// }
// //构造新的根节点
// // TreeNode root = new TreeNode(root1.val+root2.val);
// //处理顺序可以调换的
// root1.val+=root2.val;//处理根
// //构建左右子树
// root1.left = dfs(root1.left,root2.left);//合并左
// root1.right = dfs(root1.right,root2.right);//合并右
// return root1;
// }
// }
class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if(root1 == null && root2 == null) return null;
if(root1!=null&&root2==null) return root1;
if(root2!=null&&root1==null) return root2;
var queue = new LinkedList<TreeNode>();
queue.offer(root1);
queue.offer(root2);
while(queue.size()>0){
TreeNode node1 = queue.poll();
TreeNode node2 = queue.poll();
node1.val+=node2.val;
if(node1.left!=null && node2.left!=null){
queue.offer(node1.left);
queue.offer(node2.left);
}
if(node1.right!=null && node2.right!=null){
queue.offer(node1.right);
queue.offer(node2.right);
}
if(node1.right==null && node2.right!=null){
node1.right = node2.right;
}
if(node1.left==null && node2.left!=null){
node1.left = node2.left;
}
}
return root1;
}
}