617. 合并二叉树

✅做题思路or感想:

有返回值的递归果然还是特别不熟练啊

  • 递归参数:因为要同时遍历两棵树,所以要同时传入两棵树的节点!
  • 递归中止条件:当其中一个节点无的时候,就返还另一个节点(两个节点都无,就返回空节点)
  • 递归单层逻辑:两个节点的值相加(因为前面中止条件决定了这里的两个节点都必定不是空节点)
  • 有返回值的递归最后还要再把节点返回回去,太男了
class Solution {
public:
    TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {
        //递归中止条件
        if (root1 == nullptr)return root2;
        if (root2 == nullptr)return root1;
        //单层逻辑
        root1->val += root2->val;
        //递归
        root1->left = mergeTrees(root1->left, root2->left);
        root1->right = mergeTrees(root1->right, root2->right);
        //最后还要返回值给递归函数
        return root1;
    }
};
posted @ 2022-03-29 20:32  北原春希  阅读(36)  评论(0)    收藏  举报