617. 合并二叉树
题目描述
给你两棵二叉树: root1 和 root2 。
想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的节点。
返回合并后的二叉树。
注意: 合并过程必须从两个树的根节点开始。
解题思路
class Solution {
public:
TreeNode* mergeTrees(TreeNode* r1, TreeNode* r2) {
if(!r1&&!r2)return 0;
TreeNode*l=mergeTrees(r1?r1->left:0,r2?r2->left:0);
TreeNode*r=mergeTrees(r1?r1->right:0,r2?r2->right:0);
return new TreeNode((r1?r1->val:0)+(r2?r2->val:0),l,r);
}
};