【C++】102.二叉树的层序遍历

抖音直播小风车跳转企业微信全攻略:企业号申请+落地页配置详解 本文详细解析了抖音直播小风车跳转企业微信的全流程,包括企业号申请、小风车配置和落地页优化。通过实战指南,帮助企业高效实现私域流量沉淀,提升直播转化率,特别适合电商和营销从业者参考。 阅读详情

题目描述

  • 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例1:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

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

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

提示:

  • 树中节点数目在范围 [0, 2000] 内
  • -1000 <= Node.val <= 1000

思路分析

这个问题实际上可以只用一个队列就实现,只需要再增加一个变量levelSize,用来记录每一层的数据个数,然后再让这个队列一层一层的出去。之前的方法中,实际上队列并不是一层一层出去的,它有可能队列里面同时有两层的数据,我们以下面这个图来解释一下原因:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果有两层队列实现的话,3这个节点出来的时候,会让9和20这两个节点进入队列,而9这个节点出来的时候会让15这个节点进入队列,这个时候队列里面就同时有了第2层和第3层的数据。

所以我们想通过levelSize来达到一个目的:控制这个队列实现一层一层的出去。

那我们要怎么实现呢?我们仍然以刚才的图来进行分析:

3节点进入队列的时候,它的层数为1,由于它是根节点,所以它肯定只有一个,所以3就可以直接出队列。这个时候我们让levelSize进行自减操作它就变成了0,表示这一层已经出完了。

那么由于3节点出的时候会把9和20也带进来,也就是说当前层的节点全部出队列的时候一定是下一层的节点全部进入队列,这个时候我们将levelSize重新更新为第二层节点的数目也就是2,然后再进行出队列的操作:9节点出队列同时将15节点带进队列,然后levelSize自减变为1;20节点出队列同时将15节点和7节点带进队列,levelSize再自减变为0。这个时候就说明第二层也出完了。那么此时第三层都在队列里面所以我们再次更新levelSize的值为3,依次类推直到整棵树都被遍历完就实现了只用一个队列实现层序遍历。

那么根据以上的思路,我们就可以写出下面的代码:

完整代码

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        queue<TreeNode*> q;
        int levelSize = 0;
        if (root)//如果根不为空,就入队列
        {
            q.push(root);
            levelSize = 1;
        }

        vector<vector<int>> vv;//用来存放一层一层出的节点
        while (!q.empty())//如果队列不等于空,就说明树还没有被遍历完
        {
            //通过levelSize控制一层一层出
            vector<int> v;//用来存放每一层的数据
            while (levelSize--)//levelSize是几循环就执行几次,--levelSize表示的则是执行(levelSize - 1)次
            {
                TreeNode* front = q.front();//先取队头的数据
                q.pop();
                v.push_back(front->val);
                //进去的同时把该节点的下一层往队列里面带

                if (front->left)//左如果不为空就让左入队列
                    q.push(front->left);

                if (front->right)//右如果不为空就让右入队列
                    q.push(front->right);

            }
            //走到这里就说明当前层已经出完了,就把当前层所出的数据放到vv里面
            vv.push_back(v);
            //更新下一层的数据
            levelSize = q.size();
        }

        return vv;
    }
};

运行结果
在这里插入图片描述

ZYNQ GP总线实现PS与PL交互 3,完成 ZYNQ7 Processing System 的配置更改后,回到 Diagram 界面中,可以看到新出现了名为 M_AXI_GP0_ACLK、M_AXI_GP0 和 FCLK_CLK0 的接口,下面我们要对这些接口进行连接或引出。此处的偏移量,AXI的相邻寄存器偏移量相差4个字节,默认slv_reg0的偏移量是0,可以推导出slv_reg1,slv_reg2的偏移量分别为4和8,这里只用到了slv_reg0,所以偏移量为0。当然了,窗口数量的增加,势必会使得单个窗口的采样深度变小。 阅读详情

相关推荐

AI数字人直播带货全攻略:从零搭建到高效运营

本文提供了一份从零开始搭建与运营AI数字人直播间的完整指南。详细解析了AI数字人直播带货的核心价值与适用场景,并分步讲解了硬件准备、软件选择、数字人创建、话术编排、OBS推流设置及开播测试等关键环节。最后,文章还分享了高效运营策略与常见避坑指南,旨在帮助商家利用AI技术实现降本增效,打造24小时不间断的智能带货直播间。

weixin_29269441的博客 2231

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

二叉树的层序遍历

吹 梦到西州的博客 554

FastApi教程

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本的传送协议。HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。

小石潭记丶 1560

(LeetCode C++)二叉树的层序遍历

链接:https://leetcode.cn/problems/binary-tree-level-order-traversal。利用队列先进先出的性质,对给定的二叉树进行层序遍历。(即逐层地,从左到右访问所有节点)。来源:力扣(LeetCode)

Hanlin的博客 771

300个fpga练手项目推荐

• 按键设置BPM,LED和蜂鸣器同步打拍(支持4/4、3/4拍)• 例:先实现DDR3控制器(基础),再构建视频处理流水线(集成)◦ 驱动小型e-Paper显示日期/时间(SPI接口,静态刷新)◦ 音频输入经FFT后,用LED柱状显示频率能量(8频段简化)◦ 通过HC-05模块接收手机指令,控制电机方向(前进/后退)• 随机点亮LED,用按钮响应,数码管显示反应时间(毫秒级)• 8个LED旋转闪烁,按钮停止后显示中奖编号(带减速动画)• 用4方向按键输入手势(如→→←↑),正确后点亮绿色LED。

qq_62784677的博客 7637

世界模型和大语言模型结合开发自动驾驶算法

摘要:自动驾驶系统开发中,融合世界模型和大语言模型可显著提升效率和安全性。世界模型负责环境感知与预测(如目标检测、轨迹预测),而大语言模型优化代码生成、决策解释等环节。实施路径包括需求分析(1-2周)、模型开发(2-4个月)、模拟测试(1-2个月)、实车测试(2-3个月)和合规优化(1-2个月),总周期6-12个月。关键技术工具包括PyTorch/TensorFlow、CARLA模拟器和ROS系统,核心设计理念强调模块化、安全优先和敏捷迭代。示例代码展示了YOLO目标检测与大语言模型决策建议的集成方案。该方

ponygame的博客 826

二叉树的层序遍历,给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

二叉树的层序遍历,给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

weixin_43741253的博客 887

ArcGIS实战:地形湿度指数(TWI)计算全流程解析

本文详细解析了ArcGIS中地形湿度指数(TWI)的计算全流程,从DEM数据获取、填洼处理到水流方向与汇流累积量计算,最终实现TWI的精准计算。通过实战步骤指导,帮助读者掌握水文建模和土壤湿度预测的关键技术,适用于农业规划、生态研究等领域。

weixin_29231725的博客 869

LeetCode 102.二叉树的层次遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

NaOH__的博客 253

智能生活中枢:基于 ESP32-S3 的桌面智能助手与日程提醒终端设计与实现

本文完成了基于 ESP32-S3 的桌面智能助手与日程提醒终端的完整设计,实现了时间同步、日程管理、声光提醒、环境监测、本地存储等核心功能。硬件接线简洁、软件逻辑清晰,可直接制作成品使用。硬件方案:以 ESP32-S3 为核心,搭配 OLED、DS3231、DHT11、按键、声光模块,接线标准化、易复刻;软件方案:基于 Arduino 开发,提供标准 Mermaid 软件流程图,代码模块化、可直接编译运行;核心功能:网络授时、本地日程管理、掉电存储、声光提醒、温湿度监测,满足桌面智能助手全场景需求。

weixin_42300449的博客 208

【Windows Server 2019】Active Directory Certificate Services 证书颁发机构的安装,配置和管理Ⅰ——AD CS的安装和配置

博文主要介绍了Windows Server 2019的证书颁发机构的安装和配置方法。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 4832

Leetcode日记102. 二叉树的层序遍历给你二叉树的根节点 root ,返回其节点值的层序遍历

Leetcode日记 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历。(即逐层地,从左到右访问所有节点)。输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]输入:root = [1]输出:[[1]]输入:root = []输出:[]树中节点数目在范围 [0, 2000] 内。

qq_46170459的博客 676

【LangChain编程:从入门到实践】实现多模态代理

【LangChain编程:从入门到实践】实现多模态代理 关键词:LangChain, 多模态代理, 自然语言处理, 机器学习, 知识图谱, 对话系统, 代码生成, AI代理 1. 背景介绍 随着人工智

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 578

【c++】leetcode102 二叉树的层序遍历

leetcode102 二叉树的层序遍历 解法: 广度优先搜索

聿默的博客 237

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

LeetCode题号102__二叉树的层序遍历详细代码(C++版本)

声明::个人原创代码,转载需附上本文链接。

weixin_73352260的博客 907

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

4-5 LC102 107 二叉树的层序遍历I II C++ python力扣刷题笔记

文章目录LC102 二叉树的层序遍历1.读题2.思路3.C++代码4.python代码LC107 二叉树的层序遍历II1.读题2.思路3.C++代码4.python代码 LC102 二叉树的层序遍历 LC102 1.读题 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 2.思路 和剑指32 II 相同的题 当然也是相同的思路~ 3.C++代码 跟剑指Offer32 II一模一样滴 又敲了一遍 class Solution { public: vo

一碗菜粥的博客 382

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[C++]Leetcode102. 二叉树的层序遍历

102. 二叉树的层序遍历 题目:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 [ [3], [9,20], [15,7] ] class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) {

cpb____的博客 477

leetcode第102题题解(二叉树的层序遍历)利用C++和Java解决

题目描述: 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 解题思路: 我们做这道题是首先就可以想到队列来解决问题,开始根节点进入,随后,队列里有进有出,那么当一个数出去的时候,他的左节点和右节点依次进入,这样迭代下去 那么我们首先想到的就是二元组,但是为了简化,我们用一个变量node即可 C++代码 class Soluti

qq_45841146的博客 449

DAY-005-cpp-[102. 二叉树的层序遍历]

【代码】DAY-005-cpp-[102. 二叉树的层序遍历]

EdwardWine的博客 162

Leetcode 102. 二叉树的层序遍历 C++

Leetcode 102. 二叉树的层序遍历 题目 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 测试样例 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 题解 可以通过BFS获取结果,也可以通过递归算法传递层数实现。代码方法为后者,前者用一个队列便可以实现 代码 vector&lt

weixin_43750513的博客 375

102_二叉树的层序遍历C++

一般的层序遍历只是一股脑把树的节点打印出来,并不能看出层次。这道题要求遍历输出时要划分树的每一层。在一般层序遍历的基础上记录节点的层数即可。C++中用pair同时存储树节点(TreeNode*)和层数(int) #include<iostream> #include<stdlib.h> #include<vector> #include<queue> #include<utility> using namespace std; //definit

sakumashirayuki的博客 314

102.二叉树的层序遍历-C++

力扣难度中等,102.二叉树的层序遍历,C++实现,一个队列解决

KLZUQ的博客 450

【C++二叉树】102.二叉树的层序遍历

只是输出结果和上一题不同,倒着从最后一层往前一层一层的输出,是自底向上的层序遍历。我们只需要在上一题的基础上将vv二维数组逆置一下即可。

2202_75924820的博客 326

c++二叉树的层序遍历_102 二叉树的层序遍历

01题目信息题目地址:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7],3/\920/\157返回其层序遍...

weixin_28716217的博客 443

LeetCode C++ 102. 二叉树的层序遍历【Tree/BFS】中等

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 解法 BFS class Solution { public: vector<vector<int>> levelOrder(TreeNode* root

memcpy0的博客 415

leetcode刷题篇 102题二叉树的层序遍历 java C++版本

先看题目: 思路分析: 两种思路, 第一种是利用二叉树的层序遍历的方法,DFS, 第一种是利用二叉树的深度遍历,DFS,通过记录二叉树的深度来区分是第几层,利用二叉树的前序遍历可以满足要求 直接看代码: C++版,BFS class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { return BFS(root); } private: vector&lt

weixin_45806131的博客 280
上一篇: 六、继承(一)
下一篇: 【上海大学计算机组成原理实验报告】一、数据传送实验
Kutbas
博客等级 码龄7年 737粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kutbas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值