美文网首页
Java算法之栈

Java算法之栈

作者: 何治国 | 来源:发表于2021-10-23 15:19 被阅读0次

栈:

引言:栈是Vector的一个子类,它实现了一个标准的后进先出的栈。 栈只定义了默认构造函数,用来创建一个空栈。 栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。

创建一个空栈

Stack();

测试栈是否为空

boolean empty()

查看栈顶部的对象,但不从栈中移除它

Object peek( )

移除栈顶部的对象,并作为此函数的值返回该对象

Object pop( );

把项压入栈顶部:

Object push(Object element);

返回对象在栈中的位置,以 1 为基数:

int search(Object element);

用栈Stack 创建对象(类型不同):

Stack stack = new Stack<>();

Stack<Character> stack = new Stack<>();

示例:

//1.创建一个字符型的栈

Stack<Character> stack=new Stack<>();

System.out.println(stack);

//2.测试栈是否为空

System.out.println(stack.empty());

//3.入栈

stack.push('a');

stack.push('b');

stack.push('c');

System.out.println(stack);

//4.查看栈顶元素

System.out.println(stack.peek());

System.out.println(stack);

//5.出栈

stack.pop();

System.out.println(stack);

//6.返回对象在栈中的位置

System.out.println(stack.search('b'));

System.out.println(stack.search('a'));

//结果

[]

true

[a, b, c]

c

[a, b, c]

[a, b]

1

2

1.前序遍历二叉树:

/**

* Definition for a binary tree node.

* public class TreeNode {

*    int val;

*    TreeNode left;

*    TreeNode right;

*    TreeNode() {}

*    TreeNode(int val) { this.val = val; }

*    TreeNode(int val, TreeNode left, TreeNode right) {

*        this.val = val;

*        this.left = left;

*        this.right = right;

*    }

* }

*/

class Solution {

    public List<Integer> preorderTraversal(TreeNode root) {

        //创建一个集合

        List<Integer> list = new ArrayList<>();

        //调用方法

        pre(root,list);

        //返回集合

        return list;

    }

    public void pre(TreeNode root , List<Integer> list){

        //创建一个栈

        Stack<TreeNode> stack = new Stack<>();

        //判断下一个根节点和栈是否为空

        while(root != null || !stack.isEmpty()){

            //若根节点不等于空,将节点的值放入集合中,将节点放入栈中。

            while (root != null){

                list.add(root.val);

                stack.add(root);

                //继续向左子树遍历

                root = root.left;

            }

            //若左子树遍历完,从栈中弹出一个节点。即上一次根节点,以此来遍历右子树。以此循环来做。

            root = stack.pop().right;

        }

    }

}

相关文章

  • Android面试题总结(题目+复习链接)

    数据结构 1.栈实现原理 java数据结构与算法之栈(Stack)设计与实现 - CSDN博客 2.链表实现原理 ...

  • Java数据结构算法(五)排序

    算法这点粗略整理一下,后面完善 Java数据结构算法(一)链表 Java数据结构算法(二)栈和队列 Java数据结...

  • 技术体系

    一,java核心 java基础,jvm,算法,多线程,设计模式 Java基础:java基础相关,全栈java基础 ...

  • Java数据结构算法(三)树

    本文旨作于收集整理使用!! 导航 Java数据结构算法(一)链表 Java数据结构算法(二)栈和队列 Java数据...

  • Java数据结构算法(四)图

    本文旨作于收集整理使用!! 导航 Java数据结构算法(一)链表 Java数据结构算法(二)栈和队列 Java数据...

  • Java算法之栈和队列

    栈 基本概念 栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。栈是一种数据结构,它按照后进...

  • JVM内存模型及GC算法

    一、内存模型 程序计数器、Java虚拟机栈、本地方法栈 方法区、堆 二、GC算法

  • 2019-07-11—栈

    栈:Java数据结构和算法(四)——栈 string和char一般这么转化: 21、定义栈的数据结构,请在该类型中...

  • 下压堆栈(链表实现)

    该栈用链表实现,并是泛型的、可迭代的栈。参考于算法(第四版)的算法1.2下面是java代码: 测试结果: 附上自定...

  • 能够动态调整数组大小的栈

    该栈能够动态调整数组,并实现了迭代和泛型。参考于算法第四版算法1.1java代码如下: 测试: 我们发现当栈里元素...

网友评论

      本文标题:Java算法之栈

      本文链接:https://www.haomeiwen.com/subject/aqsraltx.html