目录
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;
}
};