当前位置: 首页 > news >正文

【Leetcode笔记】102.二叉树的层序遍历

目录

  • 知识点
  • Leetcode代码:
  • ACM模式代码:

知识点

  1. vector、queue容器的操作
  • vector<int> vec;做插入元素操作:vec.push_back(x)
  • queue<TreeNode*> que;做插入元素操作:que.push(root);。队列有四个常用的操作:push、pop、front、back,其中,push方法用于在队列的尾部插入一个元素,而pop方法用于移除队列的头部元素。front方法返回队列的第一个元素的引用,而back方法返回队列的最后一个元素的引用。
  1. 使用auto关键字来自动推断数据类型
for (const auto& level : result) {for (int val : level) {cout << val << " ";}cout << endl;
}

Leetcode代码:

/*** 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; // 辅助的队列vector<vector<int>> result; // 存放最后结果if(root){que.push(root);}while(!que.empty()){int size = que.size(); // 每一层的节点个数,也是后面循环的次数vector<int> vec; // 存放每一层的节点值for(int i = 0; i < size; i++){TreeNode* tmp = que.front();que.pop();vec.push_back(tmp->val);if(tmp->left){que.push(tmp->left);}if(tmp->right){que.push(tmp->right);}}result.push_back(vec);}return result;}
};

ACM模式代码:

#include <iostream>
#include <vector>
#include <queue>
using namespace std;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; // 辅助的队列vector<vector<int>> result; // 存放最后结果if (root) {que.push(root);}while (!que.empty()) {int size = que.size(); // 每一层的节点个数,也是后面循环的次数vector<int> vec; // 存放每一层的节点值for (int i = 0; i < size; i++) {TreeNode* tmp = que.front();que.pop();vec.push_back(tmp->val);if (tmp->left) {que.push(tmp->left);}if (tmp->right) {que.push(tmp->right);}}result.push_back(vec);}return result;}
};int main() {// 测试代码TreeNode* root = new TreeNode(3);root->left = new TreeNode(9);root->right = new TreeNode(20);root->left->left  = new TreeNode(7);root->left->right = new TreeNode(11);root->right->left = new TreeNode(15);root->right->right = new TreeNode(7);Solution solution;vector<vector<int>> result = solution.levelOrder(root);for (const auto& level : result) {for (int val : level) {cout << val << " ";}cout << endl;}return 0;
}

测试用二叉树如下:
在这里插入图片描述

相关文章:

【Leetcode笔记】102.二叉树的层序遍历

目录 知识点Leetcode代码&#xff1a;ACM模式代码&#xff1a; 知识点 vector、queue容器的操作 对vector<int> vec;做插入元素操作&#xff1a;vec.push_back(x)。对queue<TreeNode*> que;做插入元素操作&#xff1a;que.push(root);。队列有四个常用的操作&…...

进程的状态

目录 1.操作系统的进程状态 2.Linux系统的进程状态 特殊的进程状态 进程的查看 1.操作系统的进程状态 a.新建&#xff1a;就是新建一个进程 b.运行&#xff1a;PCB结构体在运行队列中排队 c.阻塞&#xff1a;PCB结构体在等待队列中&#xff0c;等待非CPU资源就续 d:挂起…...

spring-boot集成websocket

引入Maven依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>跟随spingboot版本</version> </dependency>后端代码 /*** 开启WebSocket支持*…...

【Python】【Flask】提交表单后报500错误

【背景】 日常用户使用的一个Online的基于Flask做的工具,今天忽然报错,看现象是点击表单提交按钮后发生错误。报500内部错误。 【分析】 用print步步为营接近root cause。 报错对应视图函数的展示部分正常执行。提交表单按钮后的内容全部没有正常执行。 提交表单用的方法是…...

Golang vs Java

目录 前言 一、语言背景与特性 二、性能与效率 三、生态系统与库支持 四、开发体验与工具支持 五、微服务架构设计中的对比 六、总结与建议 前言 在当今的软件开发世界中&#xff0c;选择合适的编程语言对于项目的成功至关重要。GoLang&#xff08;也称为Golang&#x…...

HomePlug AV

目录 HomePlug AV的基本概念基本术语网络概念网络实例 HomePlug AV物理层&#xff08;PHY&#xff09;HomePlug AV OFDM收发器架构PHY的调制模式FC调制和ROBO调制物理层的特点OFDM频域/时域转换开窗/槽式OFDM信号和噪声PHY发送控制——信道自适应PHY帧格式&#xff08;Symbol&a…...

【面试八股总结】超文本传输协议HTTP(二)

参考资料 &#xff1a;小林Coding、阿秀、代码随想录 一、HTTP缓存技术 将资源&#xff08;如网页、图像、脚本等&#xff09;的副本存储在客户端或中间代理服务器上&#xff0c;以便将来的请求可以直接从缓存中获取&#xff0c;而不必重新从服务器下载资源。这有助于减少网…...

SQL Server中视图使用子查询的性能影响与优化方案

在SQL Server中&#xff0c;视图&#xff08;View&#xff09;是一种虚拟的表&#xff0c;其内容由查询定义。在视图中&#xff0c;我们可以使用子查询来组合和呈现数据&#xff0c;这为数据呈现提供了灵活性&#xff0c;但同时也可能带来一些性能上的问题。本文将深入分析视图…...

Adaboost集成学习 | Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | 基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测)基于SVM(支持向量机)和AdaBoost集成学习的时间序列预测(如股票价格预测)是一种结合了两种强大机器学习算…...

Apache DolphinScheduler 【安装部署】

前言 今天来学习一下 DolphinScheduler &#xff0c;这是一个任务调度工具&#xff0c;现在用的比较火爆。 1、安装部署 1.0、准备工作 1.0.1、集群规划 dolphinscheduler 比较吃内存&#xff0c;所以尽量给 master 节点多分配一点内存&#xff0c;桌面和虚拟机里能关的应用…...

【随笔】Git -- 高级命令(上篇)(六)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…...

java中Date类,SimpleDateFormat类和Calendar类

Date类 public Date() 创建一个Date对象&#xff0c;代表的是系统当前此刻的日期时间 public Date(long date) Constructs a Date object using the given milliseconds time value. 把时间毫秒值转变成Date日期对象 public void setTime(long date) Sets an existing Date ob…...

施耐德 PLC 控制系统 产品 + 软件总体介绍 2020

参考 2020.7 官方说明视频&#xff1a;https://www.bilibili.com/video/BV1Mi4y1G7Qc/ 总体说明 施耐德作为工业控制界巨头&#xff08;公认的几大巨头&#xff1a;西门子、AB、施耐德&#xff09;&#xff0c;PLC 控制器产品线很庞大&#xff0c;涵盖了高中低的完整产品线&…...

UniApp 应用发布到苹果商店指南

&#x1f680; 想要让你的 UniApp 应用在苹果商店亮相吗&#xff1f;别着急&#xff0c;让我来带你一步步完成这个重要的任务吧&#xff01;在这篇博客中&#xff0c;我将详细介绍如何将 UniApp 应用顺利发布到苹果商店&#xff0c;让你的应用跻身于苹果生态之中。 引言 &…...

KamaCoder 46. 携带研究材料(第六期模拟笔试)

题目描述 小明是一位科学家&#xff0c;他需要参加一场重要的国际科学大会&#xff0c;以展示自己的最新研究成果。他需要带一些研究材料&#xff0c;但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等&#xff0c;它们各自占据不同的空间&#xff0…...

MySQL的基本操作(超详细)

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 &#x1f4d4;&#xff08;零基础&#xff09;专栏&#xff1a;MSQL数据库 欢迎&#x1f64f;点赞&…...

自动驾驶之心规划控制笔记

Search-based Path Planning Methods Path Finding Problem 一般来说指标有距离,耗费时间,能量,或者多目标。 左图是拓扑地图,蓝色的点就是顶点,绿色的线是连接关系。最后得到的是一个从哪里走的一个最优,并非精细解。 右图是栅格地图,这个搜索出来的是在相对分辨率比…...

Linux中部署Java jar 包 shell 脚本

Linux中部署Java jar 包 shell 脚本 #!/bin/bash set -e# 基础 # export JAVA_HOME/work/programs/jdk/jdk1.8.0_181 # export PATHPATH$PATH:$JAVA_HOME/bin # export CLASSPATH$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarDATE$(date %Y%m%d%…...

auto.js v1.4.4 实现自动打卡

一、使用场景 所在公司的打卡软件可以单独变成一个可以点击的APP&#xff0c;所以只需要实现以下步骤&#xff1a; 自动解锁屏幕返回主屏幕并打卡锁定屏幕需要的环境&#xff1a; 手机端下载并且安装 auto.js v4.1.1 PC端VS安装对应的插件学习资料 B站学习资料 对应 第三期&am…...

【Linux实验室】NFS、DHCP的搭建

NFS、DHCP的搭建 1、nfs服务搭建及测试什么是NFS&#xff1f;环境准备服务端机器安装nfs-utils和rpcbind包启动NFS服务创建/data/NFSdata目录&#xff0c;配置nfs文件启动服务挂载测试在服务端在共享目录下创建文件测试在客户端在共享目录下创建文件 2、dhcp服务搭建及测试什么…...

Samba 总是需要输入网络凭证

输入网络凭证&#xff1a; 用户名是 cat /etc/samba/smb.conf&#xff0c;查看 valid users mxw 为用户名。而不是其他账号名或者用户名&#xff0c;更不是登录计算机时的计算机名&#xff1b; 密码是 需要记住安装samba服务器时&#xff0c;自己设置的password&#xff1…...

图像处理_积分图

目录 1. 积分图算法介绍 2. 基本原理 2.1 构建积分图 2.2 使用积分图 3. 举个例子 1. 积分图算法介绍 积分图算法是图像处理中的经典算法之一&#xff0c;由Crow在1984年首次提出&#xff0c;它是为了在多尺度透视投影中提高渲染速度。 积分图算法是一种快速计算图像区域和…...

B/S架构SaaS模式 医院云HIS系统源码,自主研发,支持电子病历4级

B/S架构SaaS模式 医院云HIS系统源码&#xff0c;自主研发&#xff0c;支持电子病历4级 系统概述&#xff1a; 一款满足基层医院各类业务需要的云HIS系统。该系统能帮助基层医院完成日常各类业务&#xff0c;提供病患挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查…...

(C)1005 继续(3n+1)猜想

1005 继续(3n1)猜想&#xff1a; 问题描述 卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里&#xff0c;情况稍微有些复杂。 当我们验证卡拉兹猜想的时候&#xff0c;为了避免重复计算&#xff0c;可以记录下递推过程中遇到的每一个数。例如对 n3 进行验证的时候&a…...

编译好的C++应用程序拷贝到其它电脑,提示dll未找到依赖项的解决方法。

编译好的C应用程序拷贝到其它电脑上&#xff0c;运行时出现提示dll未找到依赖项。 由于dll依赖于其它dll&#xff0c;在开发用电脑上的环境不能完全与其它电脑相同。 解决办法是找到调用到的dll依赖的所有dll&#xff0c;拷贝到运行目录下。 在开发电脑上&#xff1a; 1、开…...

wps 开发插件

官方文档参考wps官方文档参考 1.环境安装 安装wps https://www.wps.cn/ 安装Node.js https://nodejs.org/en 安装代码编辑器 Visual Studio Code https://code.visualstudio.com/ 环境检查-进入cmd查看 node -v2.demo 2.1 demo下载 打开vscode&#xff0c;新建终端 安装…...

C语言----数据在内存中的存储

文章目录 前言1.整数在内存中的存储2.大小端字节序和字节序判断2.1 什么是大小端&#xff1f;2.2 练习 3.浮点数在内存中的存储3.1.引子3.2.浮点数的存储3.2.2 浮点数取的过程 前言 下面给大家介绍一下数据在内存中的存储&#xff0c;这个是一个了解c语言内部的知识点&#xf…...

【Linux学习】Linux 的虚拟化和容器化技术

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

Delphi 是一种内存安全的语言吗?

上个月&#xff0c;美国政府发布了 "回到基石 "报告&#xff1a; 通往安全和可衡量软件之路 "的报告。该报告是美国网络安全战略的一部分&#xff0c;重点关注多个领域&#xff0c;包括内存安全漏洞和质量指标。 许多在线杂志都对这份报告进行了评论&#xff0…...

golang语言系列:Scrum、Kanban等敏捷管理策略

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 golang语言系列 文章&#xff0c;主要对编程通用技能 Scrum、Kanban等敏捷管理策略 进行学习 1.什么是敏捷开发 敏捷是一个描述软件开发方法的术语&#xff0c;它强调增量交付、团队协作、持续规划和持续学习。…...

建设银行卡如何网站激活/seo什么意思中文意思

1. 注意&#xff1a;如果想使用Subtitle类型的单元格&#xff0c;需在Storyboard中将Protocell设置为subtitle类型&#xff0c;且Protocell的identifier必须与ViewController中cellForRow方法设置&#xff0c;保持一致&#xff0c;才能保证在subtitle行内容被显示出来。 - (UI…...

营销式网站制作/seo网络推广是什么意思

STM32F407ZG的简单介绍0 处理器基本参数1 程序环境2 系统架构2.1 S0&#xff1a;I 总线2.2 S1&#xff1a;D 总线3.3 S2&#xff1a;S 总线2.4 S3、S4&#xff1a;DMA 存储器总线2.5 S5&#xff1a;DMA 外设总线2.6 S6&#xff1a;以太网 DMA 总线2.7 S7&#xff1a;USB OTG HS…...

不用ftp可以做网站吗/深圳百度推广关键词推广

Next.js 教程阐述标签式导航 Router模块进行跳转阐述 学完如何编写组件和页面后&#xff0c;下一步应该了解的就是路由体系&#xff0c;每个框架都有着不同的路由体系&#xff0c;本文先学习最基础的页面如何跳转。 页面跳转一般有两种形式&#xff1a; 第一种是利用标签 <…...

西部网站建设/天堂网长尾关键词挖掘网站

1.进程和线程 进程&#xff1a; 计算机中程序关于某数据集合的一次运行活动&#xff0c;是计算机系统进行资源分配和调度的基本单位&#xff0c;是操作系统结构的基础。 线程&#xff1a; 线程是进程的实例&#xff0c;是CPU进行资源分配和调度的最小单位&#xff0c;线程是轻量…...

网站策划设计招聘/小程序开发框架

作者&#xff1a;朱金灿 来源&#xff1a;https://blog.csdn.net/clever101 将一个Windows程序从32位转为64位程序&#xff0c;出现用户回调期间遇到未经处理的异常的错误&#xff0c;如下图&#xff1a; 经过调试发现是调用GetWindowLong返回为空指针&#xff0c;经过搜索&am…...

做网站用什么cms/如何制作一个网址

点击左上方蓝字关注我们7月27日&#xff0c;百度与中国计算机学会&#xff08;以下简称CCF&#xff09;联合成立的“CCF-百度松果基金”&#xff08;以下简称松果基金&#xff09;在京举行签约仪式&#xff0c;双方将联手面向海内外高校及科研院所的青年学者&#xff0c;搭建产…...