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

AI agents在公司财务报表分析中的应用 在当今竞争激烈的商业环境中,公司财务报表分析对于企业的决策制定、风险评估、战略规划等方面起着至关重要的作用。传统的财务报表分析方法往往依赖于人工操作,存在效率低下、容易出错、难以处理海量数据等问题。而AI agents作为人工智能领域的重要成果,具有自动化、智能化、高效性等特点,能够为财务报表分析带来新的突破和变革。 阅读详情

题目描述

  • 给你二叉树的根节点 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;
    }
};

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

基于STM32、HAL库的IP5356M快充协议芯片简介及驱动程序设计 @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。* @param hip: IP5356M句柄指针。 阅读详情

相关推荐

NVIDIA NCCL 安装和测试实战教程

ibrary)是用于深度学习应用的高性能通信库,可加速多GPU通信和同步。它能够在多个GPU之间进行高效的数据传输和集体操作,显著提高了分布式GPU系统上深度学习训练和推理的性能。NVIDIA NCCL是加速多GPU系统上深度学习应用的必不可少的工具。其高效的通信原语和集体操作显著提高了分布式训练和推理的性能,使其成为现代深度学习基础架构的关键组成部分。

weixin_39818775的博客 4427

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

二叉树的层序遍历

吹 梦到西州的博客 554

保姆级教程:用Verilog手把手实现一个MIPI CSI-2 D-PHY接收器(附PPI接口时序详解)

本文提供了一份详细的Verilog实现MIPI CSI-2 D-PHY接收器的教程,重点解析了PPI接口时序和deskew数据对齐技术。通过模块划分、时钟域处理、状态机设计和错误恢复机制等实战内容,帮助开发者掌握高速数据接收的核心技术,适用于嵌入式视觉系统开发。

weixin_30619101的博客 512

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

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

Hanlin的博客 771

在Jetson orin NX上安装部署Yolov8

1、环境准备与依赖安装2、安装PyTorch和Torchvision:从NVIDIA官方论坛或开发者下载中心获取与你的JetPack版本兼容的PyTorch wheel文件。例如,对于JetPack 5.1.2,可以安装PyTorch v2.1.0 8。:需要编译安装与PyTorch版本匹配的Torchvision。这里自己编译没有成功,下载了一个现成的可以用torchvision-0.16.2+c6f3977-cp38-cp38-linux_aarch64.whl。

xxxcccvvvbbb的博客 774

kali破解WIFI密码

今天我们来学习一下通过kali和一个好的字典来破解WIFI密码。 声明:此教程仅供学习研究使用,严禁使用此技术进行非法行为 首先我们需要一个具有监听功能的无线网卡(这里我给大家推荐:rt3070) 本章实验通过虚拟机VMware进行: 先通过services.msc来打开VMware USB Arbitration Service 插上监听网卡,连接USB到虚...

#的博客 5807

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

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

weixin_43741253的博客 887

智能垃圾桶改造指南:树莓派+垃圾分类模型部署全记录(含数据集获取)

本文提供了一份详尽的智能垃圾桶DIY改造指南,核心是利用树莓派部署轻量化的YOLOv8垃圾分类模型。内容涵盖从数据集获取、模型训练与OpenVINO量化优化,到硬件组装、电路连接及软件集成的全流程,旨在帮助创客和爱好者以低成本实现一个能自动识别垃圾并分类的AIoT原型系统。

k6l7m8n9的博客 508

LeetCode 102.二叉树的层次遍历

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

NaOH__的博客 253

【乐企文件生成工程】乐企文件生成支持所有特定要素类型发票

【代码】【乐企文件】乐企文件生成最新更新!!!

九七的博客 849

Xilinx平台SRIO介绍(二)SRIO IP核基础知识

使用SRIO IP核必须掌握的基础知识! 理解了这篇,剩下的只是代码罢了。

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 4万+

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

在 SAP Fiori 中正确配置 Group 角色:从 PFCG 分配到首页呈现的完整链路

摘要:SAP Fiori项目中,用户登录后能否看到应用往往取决于角色配置而非前端开发。关键在于通过PFCG角色将launchpad designer中创建的tile group关联到用户角色。Catalog是应用池,group是用户首页可见的工作区。正确配置后,用户会看到角色对应的默认分组,同时保留个性化调整能力。项目实施中常见问题是应用开发完成但未正确配置group与角色关联,导致业务用户无法在首页看到应用入口。(150字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 164

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

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

聿默的博客 237

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

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

weixin_73352260的博客 907

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[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、付费专栏及课程。

余额充值