每天一道leetcode:剑指 Offer 32 - III. 从上到下打印二叉树 III(中等广度优先遍历)

news2024/11/26 10:29:00

今日份题目:

请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

示例

给定二叉树: [3,9,20,null,null,15,7],
    3
   / \
  9  20
    /  \
   15   7

返回其层次遍历结果:
[
  [3],
  [20,9],
  [15,7]
]

提示

1. 节点总数 <= 1000

题目思路

使用广度优先遍历,与II不同之处在于,需要对偶数行的内容进行翻转。这里用到了c++库中的reverse函数进行vector的int型内容的翻转。

reverse ( v.begin( ) , v.end ( ) )

代码

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution 
{
public:
    vector<vector<int>> levelOrder(TreeNode* root) 
    {
        vector<vector<int> > ans;
        if(root==NULL) return {};
        queue<TreeNode*> p;
        //BFS
        p.push(root);
        int flag=0;
        while(!p.empty())
        {
            int n=p.size();
            ans.push_back(vector<int> ());
            for(int i=0;i<n;i++)
            {
                TreeNode* cur=p.front();
                p.pop();
                ans.back().push_back(cur->val);
                if(cur->left) p.push(cur->left);
                if(cur->right) p.push(cur->right);
            } 
        }
        for(int i=1;i<ans.size();i+=2) reverse(ans[i].begin(),ans[i].end());
        return ans;
    }
};

提交结果

 欢迎大家在评论区讨论,如有不懂的代码部分,欢迎在评论区留言!

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

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

相关文章

pytorch Stream 多流处理

CUD Stream https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#c-language-extensions 中指出在kenel的调用函数中最后一个可选参数表示该核函数处在哪个流之中。 - 参数Dg用于定义整个grid的维度和尺寸&#xff0c;即一个grid有多少个block。为dim3类型。…

电脑开不了机如何解锁BitLocker硬盘锁

事情从这里说起&#xff0c;不想看直接跳过 早上闲着无聊&#xff0c;闲着没事干&#xff0c;将win11的用户名称改成了含有中文字符的用户名&#xff0c;然后恐怖的事情发生了&#xff0c;蓝屏了… 然后就是蓝屏收集错误信息&#xff0c;重启&#xff0c;蓝屏收集错误信息&…

【软件工程】2.4 建立动态模型

目录 2.4 建立动态模型 2.4.1 活动图 验证密码活动图 转账活动图 存款活动图 取款活动图 2.4.2 顺序图 2.4.3 状态图 ATM类状态图 总行状态图 分行状态图 2.4.4 协作图 总博客&#xff1a; 2.4 建立动态模型 开发交互式系统&#xff0c;动态模型非常重要 步骤&#…

电商运营必备!6步教你做好电商复盘

一、业绩及关键指标 1、总体完成情况&#xff1a;GMV、UV、转化率、客单价、件单价、连带率、UV价值等&#xff0c;达成率如何&#xff0c;数据同比、环比增幅&#xff0c;与大盘对比情况如何。 2、分阶段及日销情况&#xff1a;预热、预售、开门红、日销、大cu高潮期等销售达…

QFileDialog 对话框类

QFileDialog 对话框类 QFileDialog 对话框类是 QDialog 类的子类, 通过这个类可以选择要打开/保存的文件或者目录。关于这个类我们只需要掌握一些静态方法的使用就可以了。 /* 通用参数:- parent: 当前对话框窗口的父对象也就是父窗口- caption: 当前对话框窗口的标题- dir: 当…

Unity游戏源码分享-仿帝国时代游戏Demo-uRTS Toolkit

Unity游戏源码分享-仿帝国时代游戏Demo-uRTS Toolkit 游戏的架构值得参考 项目地址&#xff1a;https://download.csdn.net/download/Highning0007/88189905

医院临床病例管理系统,促进医疗数据的管理

医疗行业的不断发展&#xff0c;临床病例管理系统也逐渐成为医院管理重要的一环&#xff0c;医院临床病例管理系统是一款集医学信息管理、科研分析以及教学为一体的平台&#xff0c;为医生提供更加高效、准确的病例管理方式&#xff0c;提高诊疗质量&#xff0c;为医学科研提供…

‘vue’不是内部或外部命令,也不是可运行的程序或批处理文件的原因及解决方法

今天我在用node.js的时候&#xff0c;结果出现如下错误&#xff1a; C:\Users\xiesj> vue -v vue不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 原因&#xff1a; 1、确定npm是否已正确安装&#xff1f; 2、确定vue以及vue-cli已正确安装&#xff1f;…

亚马逊将与FTC官员会面!为避免反垄断诉讼做最后努力!

据外媒报道&#xff0c;据一位熟知内情的消息人士透露&#xff0c;亚马逊将于下周与美国联邦贸易委员会&#xff08;FTC&#xff09;会面&#xff0c;为避免反垄断诉讼做最后努力。这一举动被视作双方在对簿公堂或者达成和解之前最后的仪式性会议。 FTC在前总统唐纳德特朗普执…

智能文件改名,轻松复制文件并删除目标文件夹中的冗余文件

亲爱的用户们&#xff0c;我们常遇到这样的问题——在文件复制到指定文件夹时&#xff0c;目标文件夹中的冗余文件不断堆积&#xff0c;导致文件混乱、占用存储空间的情况&#xff1f;现在&#xff0c;我们为您带来了一种智能解决方案&#xff0c;让文件管理更简单 第一步&…

Cat.1 bis市场竞争加剧,美格智能脱颖而出有高招

全球物联网产业正值爆发期&#xff0c;2G/3G退网已成趋势&#xff0c;4G/5G协同发展持续进行中。在未来5~10年里&#xff0c;蜂窝物联网将由NB-IoT、LTE-Cat.1 bis、LTE-Cat.4 和RedCap、5G等技术来满足低速、中速、高速的物联网应用场景的需求。 Cat.1 bis承接了中速率物联网…

jmeter 二次开发详解

目录 背景&#xff1a; 自定义 BeanShell 功能 自定义请求编写&#xff08;Java Sampler&#xff09; 实现 Java Sampler 功能的两种方式 案例&#xff1a;使用 JavaSampler 重写 HTTP 的 POST 请求 自定义函数助手 背景&#xff1a; JMeter 是一个功能强大的性能测试工具…

idea打开多个项目需要开多个窗口(恢复询问弹窗)

【版权所有&#xff0c;文章允许转载&#xff0c;但须以链接方式注明源地址&#xff0c;否则追究法律责任】【创作不易&#xff0c;点个赞就是对我最大的支持】 前言 仅作为学习笔记&#xff0c;供大家参考 总结的不错的话&#xff0c;记得点赞收藏关注哦&#xff01; 使用…

时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测

时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测。基于贝叶斯(bayes)…

第一章-JavaScript基础进阶part4:PC端常见特效实现原理

文章目录 一、元素偏移量offset1.1 offset常用属性1.2 offset与style的区别1.3 案例 二、元素可视区client2.1 常用client属性2.2 client应用-flexible.js核心原理 三、元素滚动scroll3.1 scroll系列常用属性3.2 mouseover和mouseenter的区别 四、动画函数封装4.1 动画实现原理…

JNI之Java实现远程打印

打印机是最常见的办公设备了。一般情况下如果需要实现打印&#xff0c;可通过前端print.js包来完成。但是&#xff0c;如果要实现智能办公打印&#xff0c;就可以使用JNI技术、封装接口、远程调用实现完成。 导包 jacob&#xff1a;Java COM Bridge <dependency><g…

python实现简单的爬虫功能

前言 Python是一种广泛应用于爬虫的高级编程语言&#xff0c;它提供了许多强大的库和框架&#xff0c;可以轻松地创建自己的爬虫程序。在本文中&#xff0c;我们将介绍如何使用Python实现简单的爬虫功能&#xff0c;并提供相关的代码实例。 如何实现简单的爬虫 1. 导入必要的…

7 个最佳Node.js日志记录库和聚合器

日志记录是软件测试的重要组成部分。当我们知道错误是什么以及代码中出现问题的确切行时&#xff0c;调试应用程序要容易得多。 在本文中&#xff0c;我们将探讨与 Node.js 中的日志记录相关的各种概念&#xff0c;包括七个流行的日志记录库和聚合器&#xff0c;您可以使用它们…

【Linux进阶之路】进程(上)

文章目录 前言一、操作系统加载过程二、进程1.基本概念2.基本信息①运行并观察进程②创建子进程③僵尸与孤儿进程&#xff08;父子进程衍生出来的问题&#xff09;1. 僵尸进程&#xff08;Zombie状态&#xff09;2. 孤儿进程 3.基本状态①操作系统的状态&#xff08;统一&#…

计算机视觉--距离变换算法的实战应用

前言&#xff1a; Hello大家好&#xff0c;我是Dream。 计算机视觉CV是人工智能一个非常重要的领域。 在本次的距离变换任务中&#xff0c;我们将使用D4距离度量方法来对图像进行处理。通过这次实验&#xff0c;我们可以更好地理解距离度量在计算机视觉中的应用。希望大家对计算…