leetcode 102. 二叉树的层序遍历

news2024/12/25 0:37:58

2023.6.28

     

        二叉树的层序遍历,需要用到的数据结构是队列。有几个核心点:

  • 初始化变量 size,用于记录每层节点的数量。不能直接用que.size(),因为队列的大小是会随时变化的。
  • 在内层while循环中,每次先将队头节点的值保存至数组中,再将其弹出队列,最后将其左右孩子节点放入队列中,重复size次。(size记录的是每层节点的数量)。

        下面上代码:

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> ans;
        queue<TreeNode*> que;
        int size = 0; //用于记录每层节点的数量

        if(root == nullptr) return{};
        que.push(root);
        while(!que.empty())
        {
            vector<int> v;
            size = que.size();
            while(size--)
            {
                TreeNode* node = que.front();
                v.push_back(node->val);
                que.pop();
                if(node->left) que.push(node->left);
                if(node->right) que.push(node->right);
            }
            ans.push_back(v);
        }
        return ans;
    }
};

 

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

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

相关文章

HDLbits--Bugs mux4

用二选一多路选择器创建4选一多路选择器 说先修改编译问题&#xff1a;mux0&#xff0c;mux1变量重复使用&#xff0c;并且位宽只有一位&#xff0c;修改后编译 结果&#xff1a; 可知&#xff1a;00-a&#xff0c;01-b,10-c,11-d 可知sel[0]区分a和b&#xff0c;c和d &…

vue2项目Vant组件Dialog 弹出框异步关闭的坑

vue2项目使用vant&#xff0c;我这边是全局引入的&#xff0c;引入插件官方文档中有&#xff0c;这边就不介绍了。 安装&#xff1a;Vant 2 - Mobile UI Components built on Vue 话不多说直接说坑&#xff0c;当时写这个的时候真的给我气到了~~~ 先看一下官方文档&#xff1…

VS2019 Python连接Sql server2008

安好后&#xff1a; 测试代码&#xff1a; import pymssqltry:conn pymssql.connect(host127.0.0.1,usersa,password123456,databasehotel,charsetutf8)# 连接并执行Sql语句cursor conn.cursor()sql select * from odercursor.execute(sql)# 获取数据集rs cursor.fetchal…

【UCOS-III】自我学习笔记→第37讲→内存管理实验

文章目录 前言实验步骤1.复制消息队列工程&#xff0c;并创建OS内存区句柄和内存地址&#xff0c;并删除task2\task3及其相关内容2.修改task1任务函数3.查看串口现象 测试代码工程文件总结 前言 无&#xff0c;仅作记录&#xff0c;不具有参考价值&#xff0c;所用开发板为STM…

记一次docker-compose的坎坷安装经历

最近公司在做一个kafka项目&#xff0c;所以想用docker来安装kafka集群&#xff0c;所以安装完docker后就准备安装docker-compose&#xff0c;但在安装过程中确碰到了各种问题&#xff0c;搞了两个半天再通过翻墙工具才终于搞定。 首先看了篇文章显示安装前要对应docker版本。 …

Spring Boot 中的 @Transactional 注解是什么,原理,如何使用

Spring Boot 中的 Transactional 注解是什么&#xff0c;原理&#xff0c;如何使用 简介 在 Spring Boot 中&#xff0c;Transactional 注解是非常重要的一个注解&#xff0c;用于实现数据库事务的管理。通过使用 Transactional 注解&#xff0c;我们可以很方便地对事务进行控…

用Docker部署Nginx

部署步骤&#xff1a; 1.拉取镜像 docker pull nginx 2.创建并进入容器 docker run -d --name nginx01 -p 3344:80 nginx #注意nginx01是起的名字&#xff0c;3344是公网访问的端口&#xff0c;80是Nginx的默认端口 3.启动Nginx curl localhost:3344 4.在我的windows系统访…

OAuth2:使用Gitee第三方授权

gitee OAuth2文档 1. 配置授权页url 传入client_id&#xff08;创建应用获得&#xff09;、redirect_uri&#xff08;需要通过第三方授权跳转的url&#xff09; https://gitee.com/oauth/authorize?client_id{client_id}&redirect_uri{redirect_uri}&response_type…

ACSNet分割模型搭建

原论文&#xff1a;Adaptive Context Selection for Polyp Segmentation源码&#xff1a;https://github.com/ReaFly/ACSNet. 直接步入正题~~~ 一、基础模块 class ConvBlock(nn.Module):def __init__(self, in_channels, out_channels, kernel_size, stride, padding):supe…

linux下卸载vmware

linux下卸载vmware 一、卸载二、vmware安装及使用 &emps;如果linux下安装了vmware系列产品&#xff0c;需要卸载或重装的&#xff0c;本文介绍了详细的卸载方法&#xff1a; 一、卸载 一般的发行版都不会带有vmware&#xff0c;所以通常是下载安装包来安装。这里主要说的就…

谷歌chrome浏览器所有历史版本下载及selenium自动化控制插件资源分享

使用python selenium做网页自动化开发的小伙伴经常需要用到google chrome浏览器以及chromedriver插件。 谷歌浏览器所有历史版本下载链接&#xff1a; chrome历史版本&#xff0c;点击下载 chromedriver插件下载地址&#xff1a;下载链接1&#xff1a;点击下载下载链接2…

一文了解python中pip的使用

目录 &#x1f352;pip的作用 &#x1f352;pip的使用 &#x1f352;运行python &#x1f353;1.终端运行 &#x1f353;2.运行python文件 &#x1f353;3.pycharm &#x1f352;IDE的概念 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1…

scGen perturbation response prediction

如何利用scGen进行扰动响应预测 scGen是什么 scGen is a generative model to predict single-cell perturbation response across cell types, studies and species (Nature Methods, 2019). scGen is implemented using the scvi-tools framework. 文章传送门 Original tut…

Axure教程——100内的随机加减

本文介绍用Axure制作随机加减数效果 效果 预览地址https://ik31ey.axshare.com 制作 一、需要的元件&#xff1a; 2个动态面板&#xff0c;2个文本框&#xff0c;4个矩形&#xff0c;1个图片 二、制作过程 1、随机加 拖入一个矩形元件&#xff0c;命名为“被加数”&#xff…

MQ选手终极对决:比较几个主流MQ实现分布式事务的方案

1、MQ实现分布式事务 在分布式事务的实现中&#xff0c;ACK消息和半消息是两种实现分布式事务的两种不同机制&#xff0c;它们的共同点是都使用了两阶段提交的机制&#xff0c;但是它们的实现细节和适用场景有所不同。具有一些区别和特点。下面是ACK消息和半消息在实现分布式事…

暑期旅游市场火热,旅游行业如何做好邮件营销

随着2023年全国高考结束&#xff0c;以及各大高校毕业生也将陆续告别校园&#xff0c;许多学生都会用一场具有庆贺、欢聚意义的毕业旅游来为自己的高中生涯或大学生涯画上完美句号。携程数据显示&#xff0c;6月9日至8月底&#xff0c;高中和大学毕业生的旅游订单逐渐增多&…

QT 5.9.9 配置使用 MYSQL5.7 数据库

目录 Mysql下载安装 QT 下载安装 编译MYSQL mingw构建方式 msvc构建方式 QT中MYSQL测试使用 因为版权问题&#xff0c;Qt本身不自带Mysql数据库的驱动&#xff0c;因此如果想要借用Qt操作Mysql数据库&#xff0c;需要手动进行编译。 Mysql下载安装 【Qt】 Mysql服务端安装…

抖音seo账号矩阵系统源码搭建服务器内耗量?

一、短视频账号矩阵系统视频库存量技术云端如何处理&#xff1f; 1.抖音SEO账号矩阵系统源码搭建服务器内耗量怎么后端处理 非常低&#xff0c;可以轻松应对大量用户使用。通过服务器的高效运行&#xff0c;系统可以提供稳定的服务&#xff0c;并且快速响应用户的操作。源码搭…

2023年软件测试这个行业怎么样?

今天我要从一个新的角度来论述软件测试行业怎么样。 最近热搜新闻是张雪峰最近抨击的“新闻专业不要报&#xff0c;建议把孩子打晕后&#xff0c;随便选个专业都比新闻好”&#xff0c;重庆大学新闻学教授发文抨击张雪峰偏激言论&#xff0c;眼睛雪亮的人民群众却纷纷站队张雪…

C#复制构造函数学习

通过从另一个对象复制变量或将一个对象的数据复制到另一个对象来创建对象的构造函数称为复制构造函数。 复制构造函数是一个参数化构造函数&#xff0c;包含相同类类型的参数。它的主要用途是将新实例初始化为现有实例的值。 using System;namespace Mytest{class User {publi…