https://leetcode-cn.com/problems/merge-two-binary-trees/
本质还是递归的题目,越做越熟了。
// 中左右的方式遍历,即前序遍历
// 传递值:两个根节点
// 终止条件:
// 两个为空,返回null
// 内部逻辑:
// 如果一个为空,另一个不是空,则返回不是空的值
// 如果两个都有值,那就两个值相加
// root.left = mergeTrees(root1.left, root2.left);
// root.right = mergeTrees(root1.right, root2.right);
// return root;
class Solution {
public TreeNode mergeTrees(TreeNode root1, TreeNode root2) {
if(root1 == null && root2 == null) return null;
TreeNode root = new TreeNode(0);
if(root1 != null && root2 == null) root = root1;
if(root1 == null && root2 != null) root = root2;
if(root1 != null && root2 != null){
root = new TreeNode(root1.val + root2.val);
root.left = mergeTrees(root1.left, root2.left);
root.right = mergeTrees(root1.right, root2.right);
}
return root;
}
}