0
点赞
收藏
分享

微信扫一扫

2022年5月每日一题

凌得涂 2022-05-01 阅读 62

目录

5月1日:1305. 两棵二叉搜索树中的所有元素

题目链接

先遍历,后排序

s Solution {
public:
    vector<int> res;
    void dfs(TreeNode* root)
    {
        if (root == nullptr) return;
        dfs(root->left);
        res.push_back(root->val);
        dfs(root->right);
    }

    vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
        dfs(root1);
        dfs(root2);
        sort(res.begin(), res.end());
        return res;
    }
};

分别对BST数进行遍历,后归并

class Solution {
public:
    void dfs(TreeNode* root, vector<int> &nums)
    {
        if (root == nullptr) return;
        dfs(root->left, nums);
        nums.push_back(root->val);
        dfs(root->right, nums);
    }

    vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
        vector<int> nums1, nums2,res;
        dfs(root1, nums1);
        dfs(root2, nums2);

        int i = 0, j = 0; 
        while (i < nums1.size() && j < nums2.size())
        {
            if (nums1[i] < nums2[j])
                res.push_back(nums1[i ++ ]);
            else if (nums1[i] > nums2[j])
                res.push_back(nums2[j ++ ]);
            else 
            {
                res.push_back(nums1[i ++ ]);
                res.push_back(nums2[j ++ ]);
            }
        }

        while (i < nums1.size()) res.push_back(nums1[i ++ ]);
        while (j < nums2.size()) res.push_back(nums2[j ++ ]);

        return res;
    }
};
举报

相关推荐

0 条评论