栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

剑指offer Java题解之JZ37 序列化二叉树

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

剑指offer Java题解之JZ37 序列化二叉树

题目:

用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。

 


示例:

输入:["PSH1","PSH2","POP","POP"]

返回值:1,2

说明:

"PSH1":代表将1插入队列尾部
"PSH2":代表将2插入队列尾部
"POP“:代表删除一个元素,先进先出=>返回1
"POP“:代表删除一个元素,先进先出=>返回2 


思路:

队列遵循先进先出  也就是       -》321-》

而栈先进后出 -》123-》

先将元素全压入一个栈A

在pop操作中,只要栈A有元素,就把栈A中元素压入栈B -》321-》

最后pop栈B元素就可以了
 

复杂度:


时间复杂度:遍历O(n) 

空间复杂度:未使用额外空间O(1)

代码:

   Stack stack1 = new Stack();
    Stack stack2 = new Stack();
    
    public void push(int node) {
        stack1.push(node);
    }
    
    public int pop() {
        if(!stack2.isEmpty()) return stack2.pop();
        while(!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
        return stack2.pop();
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/720674.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号