前言
一定要花时间多刷题,也可以跟我一起到牛客上刷题!!!
一、题目描述
二、思路题解
对于这道二叉树的题目,我们可以采用分治的方法;
首先t1,t2两个至少有一个为空的时候,我们直接返回另一个节点(树);
当我们两个二叉树节点都不为空时,开一个新节点来存储t1,t2两个节点的值的和;
再递归新开的节点的左子树和右子树,靠递归链接起来一棵二叉树;
三. 代码实现
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
*
* @param t1 TreeNode类
* @param t2 TreeNode类
* @return TreeNode类
*/
struct TreeNode* mergeTrees(struct TreeNode* t1, struct TreeNode* t2 ) {
// write code here
if(t1==NULL)
return t2;
if(t2==NULL)
return t1;
struct TreeNode* root=(struct TreeNode*)malloc(sizeof(struct TreeNode));
if(root==NULL){
perror("malloc fail");
exit(-1);
}
root->val=t1->val+t2->val;
root->left=mergeTrees(t1->left,t2->left);
root->right=mergeTrees(t1->right,t2->right);
return root;
}
总结
一定要多刷题,总结题型,真的很重要!!!