2022/9/15 栈的压入、弹出序列 // 从上到下打印二叉树

剑指 Offer 31. 栈的压入、弹出序列

题目描述:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。

注意审题!!!

知识点:
掌握栈的使用:

import java.util.Stack;	//引用栈
//初始化
Stack<Integer> stack = new Stack<Integer>();
//进栈
stack.push(Element);
//出栈
stack.pop();
//取栈顶值(不出栈)
stack.peek();
//判断栈是否为空
stack.isEmpty()

题目解析:(抄的答案,感觉很有味道,思路啧啧啧……绝了!)

class Solution {
    public boolean validateStackSequences(int[] pushed, int[] popped) {
        Stack<Integer> stack = new Stack<Integer>();
        int i = 0;
        //就这个for循环,啧
        for(int num:pushed){
            stack.push(num);
            while(!stack.isEmpty() && stack.peek() == popped[i]){
                i++;
                stack.pop();
            }
        }
        return stack.isEmpty();
    }
}

剑指 Offer 32 - I. 从上到下打印二叉树

题目描述:
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
又称为二叉树的 广度优先搜索(BFS)。
BFS 通常借助 队列 的先入先出特性来实现

知识点:
1、arrayList的使用:
ArrayList 类是一个可以动态修改的数组,没有固定大小的限制,可以添加或删除元素。
参考链接:菜鸟

import java.util.ArrayList; // 引入 ArrayList 类
import java.util.Collections;  // 引入 Collections 类

ArrayList<String> sites = new ArrayList<String>();  // 初始化
sites.add("Google");  //增加
sites.get(1); //访问
sites.set(2, "Wiki");   // 第一个参数为索引位置,第二个为要修改的值
sites.remove(3);    // 删除
sites.size();  //计算大小
Collections.sort(sites);  // 排序

2、Queue(队列)的使用
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
先入先出

链接:菜鸟

import java.util.LinkedList;
import java.util.Queue;

Queue<String> queue = new LinkedList<String>(); //队列的元素也可以是TreeNode这类哦,神奇吧~
queue.offer("a"); //添加

//此方法之间的区别详看链接
String q = queue.poll(); //返回第一个元素,并在队列中删除
String q2 = queue.element(); //返回第一个元素 ,不删除
String q3 = queue.peek()); //返回第一个元素 ,不删除

3、Java判断Stack和Queue是否为空的方法
原文链接:csdn
Stack
stack.empty(), 为空返回true,不为空返回false。
stack.isEmpty(), 为空返回true,不为空返回false(与stack.empty()无结果上的区别)。
stack.peek(), 为空返回null,不为空返回栈顶元素。
stack.size(), 为空返回0,不为空返回一个大于1的整数。
Queue
queue.isEmpty(), 为空返回true,不为空返回false。
queue.peek(), 为空返回null,不为空返回栈顶元素。
queue.size(), 为空返回0,不为空返回一个大于1的整数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值