2023-08-14力扣每日一题

链接:

617. 合并二叉树

题意:

如题,合并两个二叉树(值合并)

解:

简单二叉树操作题

实际代码:

#include
using namespace std;
struct TreeNode
{
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode() : val(0), left(nullptr), right(nullptr) {}
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
    TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
};
void solve(TreeNode* newhead,TreeNode* root1, TreeNode* root2)
{
    if(root1!=nullptr) newhead->val+=root1->val;
    if(root2!=nullptr) newhead->val+=root2->val;
    
    if((root1!=nullptr && root1->left!=nullptr)||(root2!=nullptr && root2->left!=nullptr))
    {
        //cout<<"had left"<left=new TreeNode();
        if(root1==nullptr) solve(newhead->left,nullptr,root2->left);
        else if(root2==nullptr) solve(newhead->left,root1->left,nullptr);
        else solve(newhead->left,root1->left,root2->left);
    }
    
    if((root1!=nullptr && root1->right!=nullptr)||(root2!=nullptr && root2->right!=nullptr))
    {
        //cout<<"had right"<right=new TreeNode();
        if(root1==nullptr) solve(newhead->right,nullptr,root2->right);
        else if(root2==nullptr) solve(newhead->right,root1->right,nullptr);
        else solve(newhead->right,root1->right,root2->right);
    }
}
TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2)
{
    if(root1==nullptr&&root2==nullptr) return nullptr;
    TreeNode* newhead=new TreeNode();
    //if(root1!=nullptr) newhead->val+=root1->val;
    //if(root2!=nullptr) newhead->val+=root2->val;
    
    solve(newhead,root1,root2);
    return newhead;
}
int main()
{
    return 0;
}

限制:

  • 两棵树中的节点数目在范围 [0, 2000]
  • -104 <= Node.val <= 104

你可能感兴趣的:(力扣每日一题,leetcode)