zoukankan      html  css  js  c++  java
  • LeetCode 1305 两棵二叉搜索树中的所有元素

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

    如果想偷懒, sort一波流

    稳扎稳打, 归并+中序

    再稍微优化一点点, 遍历时直接进行归并

    最后偷一个输入加速, +0.1MB内存, -68ms用时

    双100%达成

    1305

    C艹

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
     static auto _ = [](){
        std::ios::sync_with_stdio(false);
        std::cin.tie(NULL);
        return nullptr;
    }();
    
    class Solution {
    public:
        vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
            std::ios::sync_with_stdio(false);
            std::cin.tie(NULL);
            
            std::vector<int> opt;
            
            std::stack<TreeNode*> s1, s2;
            if (root1 != NULL) s1.push(root1);
            if (root2 != NULL) s2.push(root2);
            
            auto v1 = midCheck(s1), v2 = midCheck(s2);
            while (v1 != NULL || v2 != NULL) {
                if (v1 == NULL || (v2 != NULL && v2->val < v1->val)) {
                    opt.push_back(v2->val);
                    delete v2;
                    v2 = midCheck(s2);
                    continue;
                }
                
                opt.push_back(v1->val);
                delete v1;
                v1 = midCheck(s1);
            }
            
            return opt;
        }
        
        TreeNode* midCheck(std::stack<TreeNode*> &s) {
            while (!s.empty()) {
                auto top = s.top();
                if (top->left != NULL) {
                    s.push(top->left);
                    top->left = NULL;
                    continue;
                }
                
                s.pop();
                if (top->right != NULL) {
                    s.push(top->right);
                    top->right = NULL;
                }
                return top;
            }
            
            return NULL;
        }
    };
    
  • 相关阅读:
    双端口SRAM中读干扰问题
    工业计算内存模块专用MRAM存储器-MR4A16B
    Java学习日报7.26
    Java学习日报7.25
    Java学习日报7.24
    Java学习日报7.23
    Java学习日报7.22
    Java学习日报7.21
    Java学习日报7.20
    Java学习日报7.19
  • 原文地址:https://www.cnblogs.com/Simon-X/p/13636683.html
Copyright © 2011-2022 走看看