当前位置: 首页 > 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服务搭建及测试什么…...

[技术突破]M9A:构建《重返未来:1999》智能自动化解决方案

[技术突破]M9A&#xff1a;构建《重返未来&#xff1a;1999》智能自动化解决方案 【免费下载链接】M9A 1999 小助手 项目地址: https://gitcode.com/gh_mirrors/m9/M9A 实现游戏体验革新的技术价值 M9A作为专为《重返未来&#xff1a;1999》设计的智能自动化工具&#…...

QuPath生物图像分析终极指南:从零基础到高效病理研究

QuPath生物图像分析终极指南&#xff1a;从零基础到高效病理研究 【免费下载链接】qupath QuPath - Bioimage analysis & digital pathology 项目地址: https://gitcode.com/gh_mirrors/qu/qupath QuPath是一款功能强大的开源生物图像分析软件&#xff0c;专门为数字…...

FPGA设计避坑指南:手把手教你搞定跨时钟域信号同步(附Verilog代码)

FPGA设计避坑指南&#xff1a;跨时钟域信号同步的工程实践与Verilog实现 在FPGA开发中&#xff0c;跨时钟域信号同步问题就像电路设计中的"暗礁"&#xff0c;稍有不慎就会导致整个系统崩溃。想象一下这样的场景&#xff1a;你的设计在仿真阶段完美运行&#xff0c;但…...

2026年隧道代理技术解析与主流服务商测评

凌晨两点&#xff0c;某美妆品牌运营小李被手机告警震醒——大促期间的竞品价格采集任务又断了。日志里满是403报错&#xff0c;手动切换了几个代理IP&#xff0c;任务勉强恢复&#xff0c;可第一波流量高峰的数据已经错过了。这不是小李第一次遇到这种麻烦&#xff0c;也不是个…...

零基础入门:时空预测的系统化学习笔记

零基础入门&#xff1a;时空预测的系统化学习笔记 很多刚接触时序与时空预测领域的朋友&#xff0c;常常会陷入两个极端&#xff1a;要么一上来就硬啃复杂的 SOTA 模型&#xff0c;连基础算子都没搞懂就想复现顶会成果&#xff0c;最后处处碰壁&#xff1b;要么只停留在基础概…...

C++ 静态成员的生命周期管理

C静态成员的生命周期管理是面向对象编程中一个既基础又关键的话题。静态成员作为类的特殊成员&#xff0c;其生命周期与普通成员变量截然不同&#xff0c;理解它们的初始化、销毁时机以及线程安全等问题&#xff0c;对于编写健壮高效的C代码至关重要。本文将深入探讨静态成员的…...

不止于集成:在RuoYi-Camunda流程设计器中实现自定义属性面板与FEEL表达式校验

深度定制RuoYi-Camunda流程设计器&#xff1a;从属性面板扩展到FEEL表达式校验实战 当标准BPMN设计器无法满足复杂业务需求时&#xff0c;定制化开发成为必经之路。某跨国零售企业的审批系统曾因无法在流程节点上定义"区域经理审批阈值"字段&#xff0c;导致每次业务…...

2025年06月CCF-GESP编程能力等级认证Scratch图形化编程一级真题解析

本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 3 分,共 30 分) 第 1 题 2025 年 4 月 19 日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间,跑动着的机器人会利用身上安装…...

别再只算理论了!聊聊直流稳压电源设计中那些容易被忽略的‘坑’:从二极管热损耗到MOSFET驱动

直流稳压电源实战避坑指南&#xff1a;从二极管选型到PCB布局的工程细节 在实验室里搭建一个能正常工作的直流稳压电源原型并不难&#xff0c;但要让它在工业现场稳定运行上千小时&#xff0c;完全是另一回事。我曾见过太多电源设计在测试台上表现完美&#xff0c;却在量产阶段…...

用2万小时人类视频预训练机器人,一场豪赌还是必经之路?

先说结论核心验证了“人类数据缩放定律”&#xff1a;在灵巧操作任务上&#xff0c;模型性能随人类预训练数据量对数线性增长&#xff0c;为数据策略提供了可预测的依据。成功的关键在于“两阶段迁移”设计&#xff1a;用大规模、廉价但“嘈杂”的人类数据奠基通用结构&#xf…...