/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
//层序遍历 两棵树的对应位置都不为空则值相加
//以返回第一颗数为例,如果第一颗树和第二颗数对应位置都不为空,值相加;第一颗树为空,第二颗不空,让第一颗的对应的位置指向第二颗的
//对应位置;第二颗为空,第一颗为空,不操作;
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if (root1 == null) {
return root2;
}
if (root2 == null) {
return root1;
}
Queue<TreeNode> que = new LinkedList<>();
que.offer(root1);
que.offer(root2);
while (!que.isEmpty()) {
TreeNode tmp1 = que.poll();
TreeNode tmp2 = que.poll();
tmp1.val += tmp2.val;
if (tmp1.left != null && tmp2.left != null) {
que.offer(tmp1.left); // 层序遍历,每次poll两棵树对应位置的两个点
que.offer(tmp2.left);
} else if (tmp1.left == null && tmp2.left != null) {
tmp1.left = tmp2.left;
}
if (tmp1.right != null && tmp2.right != null) {
que.offer(tmp1.right);
que.offer(tmp2.right);
} else if (tmp1.right == null && tmp2.right != null) {
tmp1.right = tmp2.right;
}
}
return root1;
}
}