leetcode每日一题-1305. 两棵二叉搜索树中的所有元素

简单题:中序+归并

class Solution {
public:
    vector<int> ans1,ans2,ans3;
    void dfs(TreeNode* root,vector<int> &ans){
        if(root==nullptr) return ;
        dfs(root->left,ans);
        ans.emplace_back(root->val);
        dfs(root->right,ans);
    }
    vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
        dfs(root1,ans1);
        dfs(root2,ans2);
        int i=0,j=0;
        while(i<ans1.size() && j<ans2.size()){
            if(ans1[i]>ans2[j]){
                ans3.emplace_back(ans2[j]);
                j++;
            }else{
                ans3.emplace_back(ans1[i]);
                i++;
            }
        }
        while(i<ans1.size()) ans3.emplace_back(ans1[i++]);
        while(j<ans2.size()) ans3.emplace_back(ans2[j++]);

        return ans3;
    }
};
posted @ 2022-05-01 23:19  秋月桐  阅读(17)  评论(0编辑  收藏  举报