算法题——层序遍历(一层按一组输出)

news2024/9/30 23:24:49

输入[1,2,3,4,5]

输出[[1],[2,3],[4,5]] (按照一层输出为一组)

思路:

        使用队列,在队列内层再加入一层for循环,每层的个数就是队列中当前队列的个数

python:

from collections import deque

class Solution(Object):
    def levelOrder(self, root):
        if not root:
            return []
        result = []
        que = deque() # 建立一个队列
        que.append(root)
        while que:
            # 假设第一次队列中个数为一个,for循环之后,那么第二次队列中的个数就是2,第三次队列中的个数就是2。。。以此类推。
            level = [] # 每层进行一个存储
            for _ in range(len(que)): # 根据队列中的数量确定循环此时,其实队列中的数量就是本层的要加入level中,=那一层的节点数。
                node = que.popleft()  # 每次都是先出队 
                level.append(node.val) # 加入到level中
                if node.left:
                    que.append(node.left)
                if node.right:
                    que.append(node.right)
            result.append(level)
        return result

JavaScrip:

class Solution{
    levelOeder(root){
        if(!root){
            return [];
        }
    
    const result = [];
    const queue = [];
    queue.push(root);
    while(queue.length > 0){
        const level = [];
        const size = queue.length; // 这里在js中注意要提前获取队列长度信息,如果直接写在下边for循环中的话会导致长度一直改变问题
        for (let i = 0; i < size; i++ ) {
            const node = queue.length;
            level.push(node.val);

            if(node.left){
                queue.push(node.left);
            }
            if(node.right){
                queue.push(node.right);
            }
        }
        result.push(level);
    }
    return result;
  }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2180994.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VUE a-table 动态拖动修改列宽+固定列

实现效果 实现思路 自定义表头&#xff0c;在标题后面加两个标签&#xff0c;分别用来显示拖拽图标&#xff08;cursor: col-resize&#xff09;&#xff0c;和蓝色标记线&#xff08;有的时候鼠标移动过程中不一定会在表内&#xff0c;这个时候不显示图标&#xff0c;只显示蓝…

独立样本t检验及其案例分析

作者简介&#xff1a;热爱数据分析&#xff0c;学习Python、Stata、SPSS等统计语言的小高同学~个人主页&#xff1a;小高要坚强的博客当前专栏&#xff1a;SPSS本文内容&#xff1a;独立样本t检验及其案例分析作者“三要”格言&#xff1a;要坚强、要努力、要学习 目录 一、引…

2024版Clion debug无法查看函数内数组内容 解决办法

参考Clion debug查看数组中的内容&#xff0c;新版本有所变化 众所周知&#xff0c;进入函数的数组debug不显示内容&#xff0c;解决办法如下&#xff1a; 在Evaluate expression中输入 *(int(*)[10])(数组名)

硬件设计基础之闲聊千兆以太网

一、千兆以太网的介绍 常见的以太网有几种形式&#xff0c;10Mbps、100MHz、1000Mbps、10Gbps等&#xff0c;当然还有更高的&#xff0c;接触的少些&#xff0c;暂且不聊。 10Mbps、100Mbps&#xff0c;多见于单片机使用&#xff0c;比如STM32/GD32 1000Mbps、10Gbps&#x…

React学习笔记(3.0)

classnames优化类名控制 classnames是一个简单的JS库&#xff0c;可以非常方便的通过条件动态控制class类名的显示。 安装classnames&#xff1a; npm i classnames 导入&#xff1a; import classNames from classnames <div className{classNames(box3,{box2:11})}&g…

ESXI识别USB设备

步骤&#xff1a; 插入usb设备到服务器。关闭虚拟机&#xff0c;添加USB控制器&#xff0c;根据U盘选择usb 3.0控制器&#xff0c;再添加usb设备如果usb设备灰色&#xff0c;进入主机打开SSH。使用xshell进行连接&#xff0c;运行以下命令&#xff1a; ESXI识别USB设备 - 插入…

浏览器插件的标准项目结构通常包括以下几个目录和文件

浏览器插件的标准项目结构通常包括以下几个目录和文件&#xff1a; my-extension/ ├── manifest.json // 插件的元数据和配置 ├── background.js // 背景脚本 ├── content_scripts/ // 内容脚本目录 │ └── content.js // 内容脚本…

如何使用ssm实现基于在线开放课程的Web前端设计与实现+vue

TOC ssm746基于在线开放课程的Web前端设计与实现vue 绪论 1.1 选题背景 当人们发现随着生产规模的不断扩大&#xff0c;人为计算方面才是一个巨大的短板&#xff0c;所以发明了各种计算设备&#xff0c;从结绳记事&#xff0c;到算筹&#xff0c;以及算盘&#xff0c;到如今…

基于ssm的宠物领养管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于ssm的宠物领养管理系统3拥有两种角色 管理员&#xff1a;用户管理、管理员管理、宠物管理、领养管理、评论管理、团队活动管理、志愿者申请管理、领养列表 用户&#xff1a;查看各种…

51单片机应用开发(进阶)---数码管+按键+蜂鸣器(电磁炉显示模拟)

实现目标 1、加强数码管、按键的学习&#xff0c;实现数码显示变量数据&#xff08;四位数的显示&#xff09;&#xff1b; 2、4位数码2个按键无源蜂鸣器实现模拟电磁炉功率调节及显示&#xff1b; 一、内容描述 功能描述&#xff1a;1、开机显示电磁炉功率300&#xff0c;每…

Percona Monitoring and Management

Percona Monitoring and Management (PMM)是一款开源的专用于管理和监控MySQL、MongoDB、PostgreSQL

Java入门3——操作符+String

在入门2中忘了提 String 的事情了&#xff0c;所以这篇就放在开头啦&#xff0c;很有用 话不多说&#xff0c;开始正题~ 一、String 引用数据类型之——String 1.字符串的拼接 在Java中&#xff0c;如果要把两句话合并到一句话的时候&#xff0c;其实是很简单的&#xff0c;…

0109 图解多线程死锁问题

死锁场景 &#x1f92a;举例场景&#xff1a;两个憨憨Tom和Sam去西餐厅吃牛排&#xff0c;桌子上只有一把刀和一把叉&#xff0c;Tom先拿到了叉子&#xff0c;Sam拿到了刀。只有同时拿到刀叉才能吃牛排&#xff0c;于是两个憨憨陷入如下的僵局。 这个场景中&#xff0c;就存在…

信号处理快速傅里叶变换(FFT)的学习

FFT是离散傅立叶变换的快速算法&#xff0c;可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的&#xff0c;但是如果变换到频域之后&#xff0c;就很容易看出特征了。这就是很多信号分析采用FFT变换的原因。另外&#xff0c;FFT可以将一个信号的频谱提取出来&am…

可以白嫖PPT模板的6个网站,赶紧收藏

推荐6个PPT模板网站&#xff0c;免费下载&#xff0c;绝对的高质量&#xff0c;赶紧收藏&#xff01; 1、菜鸟图库 ppt模板免费下载|ppt背景图片 - 菜鸟图库 菜鸟图库网有非常丰富的免费素材&#xff0c;像设计类、办公类、自媒体类等素材都很丰富。PPT模板种类很多&#xff0…

高中教辅汇总【35GB】

文章目录 一、资源概览二、资源亮点三、获取方式 一、资源概览 这份教辅资源汇总&#xff0c;精心搜集了高中各学科的海量教辅资料&#xff0c;总容量高达35GB&#xff0c;覆盖了语文、数学、英语、物理、化学、生物、历史、地理、政治等所有必修及选修科目。从基础知识点到难…

windos gcc 安装

一、github&#xff1a;https://github.com/skeeto/w64devkit/releases 二、安装 三、打开安装目录 四、当前目录打开命令行&#xff0c;查看版本。如果有说明安装成功 五、将bin路径放入系统环境变量path里

Moki再次拉低睡前视频难度?还能轻松点赞过万!我只能说任重道远(附保姆级制作教程)

大家好&#xff0c;我是凡人。 是一个不黑、不吹、不跟风、有知识、有骨气的五好小号主。 就在昨天&#xff0c;收到了一条短信&#xff0c;内容是&#xff1a;美图Moki电脑端正式上线。 这时我才想到&#xff0c;很早之前就关注了这块自动生成AI短片的工具&#xff0c;宣传是…

CNN中注意力机制综合指南:从理论到Pytorch代码实现

注意力机制已经成为深度学习模型&#xff0c;尤其是卷积神经网络&#xff08;CNN&#xff09;中不可或缺的组成部分。通过使模型能够选择性地关注输入数据中最相关的部分&#xff0c;注意力机制显著提升了CNN在图像分类、目标检测和语义分割等复杂任务中的性能。本文将全面介绍…

redis的数据结构,内存处理,缓存问题

redisObject redis任意数据的key和value都会被封装为一个RedisObject&#xff0c;也叫redis对象&#xff1a; 这就redis的头信息&#xff0c;占有16个字节 redis中有两个热门数据结构 1.SkipList&#xff0c;跳表&#xff0c;首先是链表&#xff0c;和普通链表有以下差异&am…