首页 > 编程语言 >Java 队列Queue的一些基本操作与概念!!!!!!!!

Java 队列Queue的一些基本操作与概念!!!!!!!!

时间:2023-10-08 13:33:06浏览次数:41  
标签:queue Java 队列 Queue 基本操作 null root

首先Java中的队列(Queue)是一种先进先出的数据结构。

 其中常见的一些基本操作与方法,包括:

  1、创建队列对象。例如:ArrayDeque、LinkedList等。

  2、入队操作。将元素添加到队列的末尾处,使用offer()方法。

  3、出队操作。从队列的头部移除并返回元素,使用poll()方法。

  4、peek()方法:查看队首元素。如果队列为空,则返回null。

  5、isEmpty()方法。用于判断队列是否为空,空则返回true。

  6、获取队列的大小,采用size()方法。

  7、清除队列内的元素,采用clear()方法。

下面采用力扣中的一道题,来展示上述的基本操作与方法。

题目:给定非空的二叉树根节点root,以数组的形式返回每一层节点的平均值。

输入:root = [3,9,20,null,null,15,7]

输出:[3.00000,14.50000,11.00000]

解释:第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11 。因此返回 [3, 14.5, 11] 

解题思路:

class Solution {
    public List<Double> averageOfLevels(TreeNode root) {
        // 二叉树的话,一定是通过left right进行遍历  root.left.val  root.right.val 每一层的结果sum/count 
        List<Double> result = new ArrayList<>();
        if(root == null){
            return result;
        }
       
        // 采用队列入队的方式进行保存数据值 - 基本操作1、创建队列对象
        Queue<TreeNode> queue = new LinkedList<>();
        // - 基本操作2、入队操作
        queue.offer(root);
        // - 基本操作5: 判断队列是否为空,为空 -> True -> False 跳出循环
        while(!queue.isEmpty()){
            // - 基本操作6: 获取队列的大小
            int size = queue.size();

            double sum = 0.0;
            for(int i=0;i<size;i++){
                // - 基本操作3: 出队操作
                TreeNode node = queue.poll();
                sum += node.val;
                // 获取对应元素的左叶子结点 + 右叶子结点
                TreeNode left = node.left;
                TreeNode right = node.right;
                if(left != null){
                    queue.offer(left);
                }
                if(right != null){
                    queue.offer(right);
                }
            }
            // 每一层 都 取平均数
            result.add(sum / size);
        }
        return result;
       

    }
} 

 

标签:queue,Java,队列,Queue,基本操作,null,root
From: https://www.cnblogs.com/kuangmeng/p/17748624.html

相关文章

  • ChatGPT 问答00023 java代码发邮件怎么带附件
    在Java中发送带附件的Email,可以使用JavaMail和JAF(JavaBeansActivationFramework)库来实现。以下是一个基本的示例代码,演示如何发送带有附件的Email:importjava.util.*;importjavax.mail.*;importjavax.mail.internet.*;publicclassSendEmailWithAttachment{public......
  • Java 位运算的解读 & | ^ ~ << >>
    Java中的位运算包括以下几种:按位与(&):对应位上,如果两个数都是1,则结果为1,否则为0。inta=3;//二进制0011intb=5;//二进制0101//0001=1System.out.println("a&b="+(a&b));按位或(|):对应位上,如果两......
  • 94基于java的智能物流管理系统设计与实现(含配套lun文,可参考做毕设)
    本章节给大家带来一个基于java智能物流管理系统设计与实现,可适用于校园物流管理系统,物流配送系统,快递物流管理,物流追踪系统,物流系统,物流运输系统,javaweb物流系统,springboot物流管理系统,javaweb智能物流系统等等;项目背景随着互联网技术的快速发展,网络时代的到来,网络信息也将会......
  • 94基于java的智能物流管理系统设计与实现(含配套lun文,可参考做bi设)
    本章节给大家带来一个基于java智能物流管理系统设计与实现,可适用于校园物流管理系统,物流配送系统,快递物流管理,物流追踪系统,物流系统,物流运输系统,javaweb物流系统,springboot物流管理系统,javaweb智能物流系统等等;项目背景随着互联网技术的快速发展,网络时代的到来,网络信息也将会......
  • Maven 引用CDH 5.4 的zookeeper时报错:Could not find artifact javax.jms:jms:jar:1.1
    错误:Couldnotfindartifactjavax.jms:jms:jar:1.1incloudera由于默认5.4.0的包引用了zookeeper3.3.1版本,进而引用了log4j的某个版本,导致的报错,改为如下即可: pom:使用cloudera的源:<repositories><repository><id>cloudera</id><u......
  • JAVA工作日志
    你好我好大家好,今天带大家一起完成工作日志这个模块,每天努力一点点,将来成就一大步。首先我们先来完成提交统计这一块,从图中可以看出来我们需要日志的类型和统计值,统计值又包括应提交数和已提交数。我们来定义一个类用来展示。 编写逻辑代码,注意红色字体提醒!!! 这个时候我们......
  • python queue join task_done的概念及实例解析
    一概念Queue.task_done()在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号Queue.join()实际上意味着等到队列为空,再执行别的操作。 二实例源码一importthreadingimportqueueimporttime#创建队列,用于存储数据q=queue.Qu......
  • Java设计模式之策略模式
    1.1 概述先看下面的图片,我们去旅游选择出行模式有很多种,可以骑自行车、可以坐汽车、可以坐火车、可以坐飞机 作为一个程序猿,开发需要选择一款开发工具,当然可以进行代码开发的工具有很多,可以选择Idea进行开发,也可以使用eclipse进行开发,也可以使用其他的一些开发工具。定......
  • 如何利用动态配置中心在JavaAgent中实现微服务的多样化治理
    本文分享自华为云社区《如何利用动态配置中心在JavaAgent中实现微服务的多样化治理》,作者:华为云开源。  一、前言随着JavaAgent在微服务治理方面的广泛应用和发展,我们可以在运行时对微服务进行监控、管理和调整,以满足不同的业务需求和运行环境。然而,随着微服务架构的复杂性增加,......
  • Java技术入门指南
    Java是一种广泛使用的编程语言,具有简单易学、跨平台、高效稳定等特点,被广泛应用于Web开发、移动应用开发、大数据处理等领域。本文将介绍Java的基本概念、语法和常用技术,帮助初学者快速入门。Java的基本概念Java是一种面向对象的编程语言,它的核心概念是类和对象。类是一种抽象......