题解 | #合并二叉树#
合并二叉树
https://www.nowcoder.com/practice/7298353c24cc42e3bd5f0e0bd3d1d759
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param t1 TreeNode类
* @param t2 TreeNode类
* @return TreeNode类
*/
TreeNode* mergeTrees(TreeNode* t1, TreeNode* t2) {
// write code here
if (t1==NULL) {
return t2;
}
if (t2==NULL) {
return t1;
}
TreeNode* head = new TreeNode(t1->val + t2->val);
head->left = mergeTrees(t1->left, t2->left);
head->right = mergeTrees(t1->right, t2->right);
return head;
}
};
合并两棵二叉树:
思路:
一般二叉树都可以用递归的思想求解。
子问题:
1.当二叉树两个树,一个是空,一个是单节点。直接返回另一个节点
2.当二叉树两个都是单节点。新建一个二叉树,当前节点赋值为两个节点和,然后将各自的左子数【递归处】合并,右子树合并
3.将合并的结果给到当前节点的head->left, head->right
4.返回head节点
