题目大意:合并两棵二叉树变成一棵树,合并时重叠的两节点值相加作为新节点,否则不为NULL的节点作为新节点
分析:dfs。先合并当前节点:有一方为空就直接返回另一方(这个分支无需再合并了),两节点都存在就值相加。然后递归合并左右子树即可。
代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
if(!t1) return t2;
if(!t2) return t1;
t1->val += t2->val;
t1->left = mergeTrees(t1->left,t2->left);
t1->right = mergeTrees(t1->right,t2->right);
return t1;
}
};