ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【leetcode】1305. All Elements in Two Binary Search Trees 二叉搜索树

2022-01-27 14:03:41  阅读:176  来源: 互联网

标签:1305 Search Elements staR1 staR2 push root1 empty root2


Given two binary search trees root1 and root2, return a list containing all the integers from both trees sorted in ascending order.

Example 1:

Input: root1 = [2,1,4], root2 = [1,0,3]
Output: [0,1,1,2,3,4]

Example 2:

Input: root1 = [1,null,8], root2 = [8,1]
Output: [1,1,8,8]

   这道题基本解法是分别遍历这两个BST,得到两个arr,然后拼接之后在进行排序,输出递增的arr。但这样并没有利用到BST的特点,bst中最小的元素应该在左子树上,按照大佬的解法,可以用栈先存储所有的左子树,然后从底层往顶层检索。


class Solution {
public:
    vector<int> getAllElements(TreeNode* root1, TreeNode* root2) {
        vector<int>vecRes;
        stack<TreeNode*> staR1,staR2;
        // bst 左子树的节点的值都小于根节点
        while(root1 ||  root2 || !staR1.empty() || !staR2.empty()){
            
            while(root1){
                staR1.push(root1);
                root1=root1->left;
            }
            while(root2){
                staR2.push(root2);
                root2=root2->left;
            }
            if(staR2.empty()|| (!staR1.empty() && staR1.top()->val<=staR2.top()->val)){
                root1=staR1.top();
                staR1.pop(); // pop smallest element in this stack
                vecRes.push_back(root1->val);
                root1=root1->right;
            }
            else{
                root2=staR2.top();
                staR2.pop();
                vecRes.push_back(root2->val);
                root2=root2->right;
            }
        }
        return vecRes;
        
    }
};

 

标签:1305,Search,Elements,staR1,staR2,push,root1,empty,root2
来源: https://www.cnblogs.com/aalan/p/15849602.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有