leetcode 1305. 两棵二叉搜索树中的所有元素

84 阅读1分钟

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