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);
    }
};

学习感想