简介
这是LeetCode中第617题,题目要求合并两个二叉树,相同位置的数相加得到新树中对应位置的值。如果某位置上,一个数有值一棵树没有值,那么直接取有值树上的值。
基本思路
基本思路为两个树从根部开始遍历,对应位置的数字相加,再对左右子树分别进行迭代,迭代的终止条件为某一个子树的节点为NULL,这样的话就可以把另外一个树该节点以下的所有节点直接接到新树上。
代码
/**
* 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 == NULL) return t2;
if(t2 == NULL) return t1;
t1->val += t2->val;
t1->left = mergeTrees(t1->left,t2->left);
t1->right = mergeTrees(t1->right,t2->right);
return t1;
}
};