c++
class Solution {
public:
vector<int> arr1, arr2;
void inOrder(TreeNode* root, vector<int> &arr) {
if (root == nullptr) return ;
inOrder(root->left, arr);
arr.push_back(root->val);
inOrder(root->right, arr);
return ;
}
vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
inOrder(root1, arr1);
inOrder(root2, arr2);
vector<int> ans;
int p1 = 0, p2 = 0;
while(p1 < arr1.size() || p2 < arr2.size()) {
if (p2 >= arr2.size() || (p1 < arr1.size() && arr1[p1] <= arr2[p2])) ans.push_back(arr1[p1++]);
else ans.push_back(arr2[p2++]);
}
return ans;
}
};
js
function inOrder(root, arr) {
if (!root) return ;
inOrder(root.left, arr);
arr.push(root.val);
inOrder(root.right, arr);
return ;
}
var getAllElements = function(root1, root2) {
var arr1 = [], arr2 = [], ans = [];
inOrder(root1, arr1);
inOrder(root2, arr2);
var p1 = 0, p2 = 0;
while (p1 < arr1.length || p2 < arr2.length) {
if (p2 >= arr2.length || (p1 < arr1.length && arr1[p1] <= arr2[p2])) ans.push(arr1[p1++]);
else ans.push(arr2[p2++]);
}
return ans;
};