【每天40分钟,我们一起用50天刷完 (剑指Offer)】第十八天 18/50【层序遍历二叉树(两个队列一个遍历上一层,一个记录下一层)】

news2024/12/29 10:33:40

专注 效率 记忆
预习 笔记 复习 做题

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)
 
文章字体风格:
红色文字表示:重难点★✔
蓝色文字表示:思路以及想法★✔
 
如果大家觉得有帮助的话,感谢大家帮忙
点赞!收藏!转发!

本博客带大家一起学习,我们不图快,只求稳扎稳打。
由于我高三是在家自学的,经验教训告诉我,学习一定要长期积累,并且复习,所以我推出此系列。
只求每天坚持40分钟,一周学5天,复习2天
也就是一周学10道题
50天后我们就可以学完76道题,相信50天后,我们一定可以有扎实的代码基础!我们每天就40分钟,和我一起坚持下去吧!
qq群:866984458

本题出自 acwing网站
这个系列是免费的
打卡即刻退回费用。

第十八天【剑指Offer例题代码 系列】

    • 31. 不分行从上往下打印二叉树( 层序遍历二叉树bfs )
    • 32. 分行从上往下打印二叉树
    • 33. 之字形打印二叉树

31. 不分行从上往下打印二叉树( 层序遍历二叉树bfs )

原题链接

在这里插入图片描述

/**
 * 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<int> printFromTopToBottom(TreeNode* root) {
        vector<int> ans;
        if(root==NULL)
            return ans;
        queue<TreeNode*> q;
        q.push(root);
        while(q.size())
        {
            auto t = q.front();
            q.pop();
            ans.push_back(t->val);
            
            if(t->left != NULL)
                q.push(t->left);
            if(t->right != NULL)
                q.push(t->right);
        }
        return ans;
    }
};

32. 分行从上往下打印二叉树

原题链接

在这里插入图片描述
在这里插入图片描述

/**
 * 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<int> get_val(vector<TreeNode*> level)
    {
        vector<int> res;
        for (auto &u : level)
            res.push_back(u->val);
        return res;
    }

    vector<vector<int>> printFromTopToBottom(TreeNode* root) {
        vector<vector<int>>res;
        if (!root) return res;
        vector<TreeNode*>level;
        level.push_back(root);
        res.push_back(get_val(level));
        while (true)
        {
            vector<TreeNode*> newLevel;
            for (auto &u : level)
            {
                if (u->left) newLevel.push_back(u->left);
                if (u->right) newLevel.push_back(u->right);
            }
            if (newLevel.size())
            {
                res.push_back(get_val(newLevel));
                level = newLevel;
            }
            else break;
        }
        return res;
    }
};

33. 之字形打印二叉树

原题链接
在这里插入图片描述
本题和上一道题差不多
就是需要定义一个变量
判断是否需要翻转

/**
 * 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<int> get_val(vector<TreeNode*> level)
    {
        vector<int> res;
        for (auto &u : level)
            res.push_back(u->val);
        return res;
    }

    vector<vector<int>> printFromTopToBottom(TreeNode* root) {
        vector<vector<int>>res;
        if (!root) return res;
        vector<TreeNode*>level;
        level.push_back(root);
        res.push_back(get_val(level));
        bool zigzag = true;
        while (true)
        {
            vector<TreeNode*> newLevel;
            for (auto &u : level)
            {
                if (u->left) newLevel.push_back(u->left);
                if (u->right) newLevel.push_back(u->right);
            }
            if (newLevel.size())
            {
                vector<int>temp = get_val(newLevel);
                if (zigzag)
                    reverse(temp.begin(), temp.end());
                res.push_back(temp);
                level = newLevel;
            }
            else break;
            zigzag = !zigzag;
        }
        return res;
    }
};

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

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

相关文章

数字虚拟人物制作为多个行业中的智能应用场景赋能

虚拟人物制作的广义定义为数字化外形的虚拟人物&#xff0c;是“虚拟”(存在于非物理世界中)“数字”(由计算机图形学、图形染、动作捕捉、深度学习、语音合成等计算机手段创造及使用)“人”(具有多重人类特征&#xff0c;如外貌、人类表演/交互能力等)的综合产物。 制作一个虚…

Hbase drop 表卡住没有响应

在实际工作中遇到过重新创建一个hbase的hive外部表&#xff0c;在 disable table_name; drop table_name 在drop table_name卡住 最后有提示报错。 建议各位查看下表有无lock的情况&#xff0c; 查看和释放hbase lock可以通过如下方式来查看 pid获取&#xff1a; 在 Ma…

idea支持vue文件-设置对vue的支持

一、idea支持.vue文件 这一步其实就是安装vue.js插件&#xff0c;具体路径为&#xff1a;File ----> Settings ----> Plugins ----> 输入vue&#xff0c;点击搜索结果里的vue.js右边的install按钮&#xff0c;安装成功后重启idea&#xff0c;这样idea就能识别.vue文件…

惨痛面经,做个记录

今天的行情太难了&#xff0c;找工作的还是比较艰难的一个过程。不和哪些优秀的人对比&#xff0c;我就是普通二本院校&#xff0c;工作4年&#xff0c;能力一般般&#xff0c;努力奋斗的一个搬砖人。分享一个月比较惨痛的找工作经历。 简历这一块自己准备的时间比较长&#xf…

争夺数据黑匣子市场,谁将接盘这家Tier1的被动安全业务

在相继卖掉智驾软件算法资产&#xff08;高通收购&#xff09;、主动安全传感器及系统业务&#xff08;麦格纳收购&#xff09;后&#xff0c;Veoneer最后剩余的被动安全系统业务&#xff08;主要是安全气囊ECU&#xff09;也在寻找产业买家。 本周&#xff0c;美国私募股权公司…

Docker Swarm安装PXC高可用集群

docker安装PXC集群 创建数据卷创建集群专用网络创建证书 主流mysql高可用的方式有以下几种 准备三台服务器 hostIP说明node1192.168.31.130PXC集群1node2192.168.31.131PXC集群2node3192.168.31.132PXC集群3 创建docker swarm集群 主节点node1执行 #docker swarm init --ad…

Camera API2 使用说明

CameraAPI1 使用说明 目录 一、 概览 1.1 Pipeline 1.2 Supported Hardware Level 1.3 Capture 1.4 CameraManager 1.5 CameraCharacteristics 1.6 CameraDevice 1.7 Surface 1.8 CameraCaptureSession 1.9 CaptureRequest 1.10 CaptureResult 1.11 一些只有 Came…

基于 Arduino 库实现 ESP32 TCP Server 应用例程

实现步骤&#xff1a; ESP32 开启 WiFi Station 模式连接路由器连上路由器后将获取到分配的 IP 地址基于分配的 IP 地址创建 TCP Server 测试代码如下&#xff1a; #include <WiFi.h> #include <WiFiClient.h>const char* ssid "cc2.4"; const char*…

《水经注地图服务》发布的影像数据在ArcMap中调用

当有用户需要发布一个省以上的海量卫星影像数据时&#xff0c;我们就会强烈建议他使用《水经注地图服务》&#xff08;WeServer&#xff09;进行发布。 因为&#xff0c;《水经注地图服务》在经过我们工程师的不断升级优化之后&#xff0c;现在发布全球100TB级卫星影像数据所需…

【用户调研】需求挖掘

文章目录 用户需求的定义为什么要挖掘用户需求需求挖掘方法用户访谈问卷调查可用性测试运营数据分析 用户访谈介绍实地研究用户观察用户访谈焦点小组 调查问卷介绍总结 用户需求的定义 为什么要挖掘用户需求 需求挖掘方法 用户访谈 问卷调查 可用性测试 运营数据分析 用户访谈介…

妙记多 Mojidoc PC端(Mac+Windows 端)内测体验官招募!

你们呼唤了无数呼唤的妙记多 Mojidoc 客户端来了&#xff01; 优先内测上线的是 桌面端&#xff01;包含 Mac端 和 Windows 端 为了更好的用户体验&#xff0c;小 Mojidoc 在上线前邀请大家一起加入内测体验&#xff01; 为了让你更好的成为内测体验官&#xff0c;有一点心里…

使用adb工具通过wifi连接安卓设备

一、下载adb包&#xff0c;并解压。网上很多地方可以下载资源或者从我的网盘下载 链接&#xff1a;https://pan.baidu.com/s/1hLf14wCCUMs2xdU5WkLY8g 提取码&#xff1a;8cbh 二、安卓设备打开开发者选项&#xff0c;打开USB调试开关 三、确保手机和wifi在同一个wifi网路下。…

SSM学习笔记-------SpringMVC(二)

SSM学习笔记-------SpringMVC&#xff08;二&#xff09; SpringMVC_day021、SSM整合1.1 流程分析1.2 整合配置步骤1&#xff1a;创建Maven的web项目步骤2:添加依赖步骤3:创建项目包结构步骤4:创建SpringConfig配置类步骤5:创建JdbcConfig配置类步骤6:创建MybatisConfig配置类步…

QT中LIBS的配置

QT中引用外部第3方库时&#xff0c;需要配置LIBS参数。 QT选择kit时有MSVC、MinGW两种方式&#xff0c;一般MSVC的静态库文件以.lib结尾&#xff0c;MinGW以.a结尾。什么是C的静态库、动态库我这里就不介绍了&#xff0c;其实这种库在几乎所有的语言中都有&#xff1a;比如jav…

用android studio 测试发行包

在google play 发行app&#xff0c;需要用bundle&#xff0c;而不是apk。 bundle 比apk 要小很多&#xff0c;比如我的app-release.aab 29,736 KB&#xff0c; 而app-release.apk 是62,305KB。这就是少了一半多。但是apk 直接复制就可以安装&#xff0c;bundle 需要上传google…

研究讯飞星火模型的时候,使用websocket的一个总结

接受数据 <?php header("Content-Type:text/html;charsetutf-8");//确保在连接客户端时不会超时set_time_limit(0);//设置IP和端口号$address "wss://tts-api.xfyun.cn/v2/tts?authorizationYXBpX2tleT0iNDE4ZjJjOTI2NTY0YTc1ZDNjMmE5NDliMTE0MzRkZTYiLCB…

回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测

回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 回归预测 | MATLAB实现WOA-GCNN鲸鱼…

三足鼎立的SIEM、SOAR和XDR

如今&#xff0c;变化的安全挑战、多态的IT架构、复杂的建设需求、严苛的合规审查……&#xff0c;甲方心力交瘁&#xff0c;乙方疲于奔命。传统安全产品交付模式&#xff0c;投入大、成本高、难维护、效果差&#xff0c;完全无法应对。 网络攻击的增长导致合规要求更加严格。…

经典目标检测算法模型总结汇总

这里主要是想要记录汇总一下平时有意无意查资料、学习等了解查阅的目标检测领域中各种模型的原理、优点缺点等内容&#xff0c;主要是方便温故知新&#xff0c;也希望能帮到需要的人。 目标检测任务涌现了很多经典的模型&#xff0c;下面是一个模型的总结记录。 (1)R-CNN&…

如何一次性修改文件扩展名

现代社会中&#xff0c;我们经常需要处理大量的文件&#xff0c;有时候需要批量修改文件的扩展名。在这种情况下&#xff0c;使用文件管理工具可以帮助我们快速完成这项任务。下面&#xff0c;我将介绍如何使用“固乔文件管家”这个文件管理工具来一次性修改文件扩展名。 首先&…