首先先看题目
先看题目,首先咱可以看出来这是一道搜索题,我本人基本也没做过类似的题。但是有大概的思路,就是深度搜索,假如判断当前结点为空,那么就将另外一个树给返回。假如两个树都不是空,那么就重新声明一个结点,此结点的值为两个树当前结点的val值相加所得。然后new的这个结点的左边是两棵树的左子树相加,结点的右子树是两个结点的右子树相加。最终将此结点返回。
代码如下
/**
* 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;
}
TreeNode tree = new TreeNode(root1.val+root2.val);
tree.left = mergeTrees(root1.left,root2.left);
tree.right = mergeTrees(root1.right,root2.right);
return tree;
}
}