目录
题目:
示例:
分析:
代码:
题目:
示例:
分析:
给我们合并两棵二叉树,合并的方式就是把对应位置的节点的值相加,最后把合并后的二叉树的根节点返回出去。
这类二叉树需要遍历的题目,我们一般都是要递归的,无论是前中后序哪一种遍历方式,都是要递归的。
本题我们直接在调用函数里递归就可以了。
我们直接做个判断,如果某个节点为空指针节点,那么就返回另一个节点。
接着没有任何节点为空指针节点,那么我们就把两个节点的值加起来,赋给节点1。
接着进入递归,节点1的左子树等于两个节点的左子树进入新的递归所返回的节点。
右子树也等于两个节点的右子树进入新的递归所返回的节点。
因为我们是把值相加到节点1的,所以我们最后返回节点1即可。
代码:
class Solution {
public:
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
if(root1==nullptr) return root2; //如果节点1为空返回节点2
if(root2==nullptr) return root1; //如果节点2为空返回节点1
root1->val+=root2->val; //直接修改节点1的值
root1->left=mergeTrees(root1->left,root2->left); //递归修改节点1的左子树
root1->right=mergeTrees(root1->right,root2->right); //递归修改节点1的右子树
return root1; //直接返回节点1
}
};