【数据结构与算法】力扣:二叉树的层序遍历

news2024/9/27 5:52:07

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例1:
在这里插入图片描述
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/binary-tree-level-order-traversal
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

在这里插入图片描述

代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        queue<TreeNode*> que;
        if(root != NULL)
        que.push(root);//如果根结点不为空 就加入队列 此时的队头元素就是根节点
        vector<vector<int>> res;//定义一个二维数组保存层序遍历的结果
        while(!que.empty())
        {
            int size = que.size();//size为当前队列的大小
            vector<int> vec;
            while(size--)
            {
                TreeNode* node = que.front();
                que.pop();
                vec.push_back(node->val);//将队头元素放入数组
                if(node->left)
                que.push(node->left);
                if(node->right)
                que.push(node->right);
            }
            //第一遍大循环 根结点6在队中 size=1 一轮循环下来 6出队 size=0,6的左右孩子4,7分别入队
            //第二遍大循环 size=2 第一个内循环4出队 4的左右孩子1,3分别入队 size=1 第二个内循环7出队 7的左右孩子5,8入队 size=0 第二层也结束了
            //第三遍大循环 size=4 ...
            res.push_back(vec);
        }
        return res;
    }
};

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

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

相关文章

纷享销客携手新奥动力,赋能能源装备制造业企业增长再提速

近日&#xff0c;纷享销客与新奥能源动力科技&#xff08;上海&#xff09;有限公司&#xff08;以下简称&#xff1a;新奥动力&#xff09;售后数字化平台项目启动仪式在上海顺利召开&#xff0c;新奥动力和纷享销客双方多位高管共同出席了当天的启动会&#xff0c;双方就CRM建…

leetcode链表刷题记录

题单&#xff1a; 一&#xff0c;移除链表元素 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 题目接口&#xff1a; /*** Definition for singly-linked list.* struct Lis…

轻量化与强度:挑选骑行爱车的科学平衡之道

在自行车运动的大家庭中&#xff0c;挑选一辆既轻量化又强度又够的自行车是一项关键的任务。那么&#xff0c;如何在轻量化与强度的矛盾中寻找这个科学的平衡点呢&#xff1f;让我们跟随本文&#xff0c;一起探讨如何挑选骑行爱车的科学之道。 首先&#xff0c;我们需要明确&am…

第4章 SSD核心技术:FTL 4.3-4.5

4.3 垃圾回收 4.3.1 垃圾回收原理 WA&#xff08;Write Amplification&#xff09;&#xff0c;即写放大。 OP&#xff08;Over Provisioning&#xff09;&#xff0c;即预留空间。 4.3.2 写放大 对于空盘来说&#xff08;未触发GC&#xff09;&#xff0c;写放大一般为1&…

基于DarkFace数据集的高精度人脸检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于DarkFace数据集的高精度人脸检测系统可用于日常生活中来检测与定位人脸目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的人脸目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练…

volatile 原理

volatile 的底层实现原理是内存屏障&#xff0c;Memory Barrier&#xff08;Memory Fence&#xff09; 对 volatile 变量的写指令后会加入写屏障对 volatile 变量的读指令前会加入读屏障 如何保证可见性 写屏障&#xff08;sfence&#xff09;保证在该屏障之前的&#xff0c…

液晶仪表业务去年赚了4个亿,又一家汽车电子厂商冲刺IPO

液晶仪表&#xff0c;有多赚钱&#xff1f; 本周&#xff0c;随着天有为电子首次对外发布IPO招股说明书&#xff0c;这家专注于电子式组合仪表、全液晶组合仪表和双联屏仪表等产品的传统汽车仪表企业&#xff0c;揭开了过去几年的财务数据。 作为一家传统汽车仪表转型升级的典…

sqlserver导入外部数据文件

1、外部数据文件存为txt格式&#xff0c;可以带中文标题保存。 2、登录链接数据库服务器&#xff0c;选择任意一个数据库右键-任务-导入数据-数据源&#xff1a;选择Flat File Sourse 平面文件.-文件名&#xff1a;选择文件路径-浏览一下列是否对应上。-下一步-目标&#xff1a…

WebStorm配置代码模板【以vue模板为例,提供vue代码模板】

配置过程 引言 为了便于开发&#xff0c;提高生产效率&#xff0c;我们通常会复制粘贴一些共同代码&#xff0c;在WebStorm中&#xff0c;可以将这些共同代码制作成模板&#xff0c;在使用的时候&#xff0c;只需要输入关键字点击按键即可将模板的代码粘贴到代码文件中&#…

免费申域名

申请地址&#xff1a;https://nic.eu.org/ 英国人地址生成器&#xff1a;https://www.shenfendaquan.com/Index/index/ying_guo_shen_fen_sheng_cheng 1、注册 填写注册信息 进入注册页面&#xff0c;输入注册信息。这里我们打开英国人地址生成器&#xff0c;用英国的信息注…

数据库应用:MySQL数据库使用与管理

目录 一、理论 1.MySQL基本操作 2.数据类型 2.使用MySQL数据库 二、实验 1.查看数据库结构 2.创建及删除库和表 3.管理表中的数据记录 4.修改表名和表结构 5.查看、修改字符集 三、问题 1.表导入新记录报错 四、总结 一、理论 1.MySQL基本操作 &#xff08;1&…

【sql注入-延时注入】sleep()、benchmark()函数 延时注入

目录 sleep()、benchmark()延时注入 一、语法介绍&#xff1a; 二、延时注入 三、不同数据库 网络安全小圈子 sleep()、benchmark()延时注入 一、语法介绍&#xff1a; 版本&#xff1a; sleep() MySQL>5.7.8 benchmark() MySQL>5.7.5 语法&#xff1a; 使用…

孤立随机森林(Isolation Forest)(Python实现)

目录 1 简介 2 孤立随机森林算法 2.1 算法概述 2.2 原理介绍 2.3 算法步骤 3 参数讲解 4 Python代码实现 5 结果 1 简介 孤立森林&#xff08;isolation Forest&#xff09;是一种高效的异常检测算法&#xff0c;它和随机森林类似&#xff0c;但每次选择划分属性和划分点&…

Linux5.95 ELK企业级日志分析系统

文章目录 计算机系统5G云计算第四章 LINUX ELK 企业级日志分析系统一、ELK 概述1.ELK 简介1&#xff09;ElasticSearch2&#xff09;Kiabana3&#xff09;Logstash4&#xff09;可以添加的其它组件&#xff1a;Filebeat5&#xff09;缓存/消息队列&#xff08;redis、kafka、Ra…

Ubuntu 18.04 下 uhd+gnuradio 安装指南,国产B210

安装ubutnu18.04&#xff0c;换源&#xff0c;apt-get update 一、虚拟机设置以及安装low-latency内核 给虚拟机分配尽可能多的cpu及内存。在USB控制器选项中&#xff0c;将USB兼容性设置为USB 3.1。 USRP B210需要用USB线连接到电脑的USB 3.0/3.1接口上&#xff0c;实现供电…

Melon库运用——栈篇

头文件片段 // mln_stack.htypedef struct mln_stack_node_s {void *data;struct mln_stack_node_s *prev;struct mln_stack_node_s *next; } mln_stack_node_t;typedef struct {mln_stack_node_t *bottom;mln_stack_node_t *top;mln_stac…

喜讯|电巢科技与陕西理工大学“新工科人才联合培养基地”签约暨揭牌仪式成功举行

7月6日上午&#xff0c;深圳市电巢科技有限公司联合陕西理工大学物理与电信工程学院在校内举行产学研座谈会&#xff0c;并完成了“新工科人才联合培养基地”的签约暨揭牌仪式。陕西理工大学物电学院党委书记韩强&#xff0c;院长卢超&#xff0c;副书记潘峰&#xff0c;副院长…

吸烟(抽烟)检测和识别2:Pytorch实现吸烟(抽烟)检测和识别(含吸烟(抽烟)数据集和训练代码)

吸烟(抽烟)检测和识别2&#xff1a;Pytorch实现吸烟(抽烟)检测和识别(含吸烟(抽烟)数据集和训练代码) 目录 吸烟(抽烟)检测和识别2&#xff1a;Pytorch实现吸烟(抽烟)检测和识别(含吸烟(抽烟)数据集和训练代码) 1.吸烟(抽烟)检测和识别 2.吸烟(抽烟)数据集 &#xff08;1&am…

msvcp120.dll丢失的解决方法?哪种方法更推荐

msvcp120.dll是一个Windows操作系统的动态链接库文件。它属于Microsoft Visual C Redistributable软件包的一部分。这个文件包含了一些用于C程序编译和运行的函数和类。当某个程序需要使用这些函数和类时&#xff0c;它会在系统中寻找msvcp120.dll文件。如果系统中缺少这个文件…

运行别人gitub上的vue代码

1.删除package-lock.json和node_modules文件 package-lock.json记录了整个node_moudles文件夹的树状结构&#xff0c;还记录了模块的下载地址&#xff0c;但是它是基于项目作者的npm版本库生成的&#xff0c;若不删掉这个依赖文件&#xff0c;容易出现npm版本差异导致的报错。…