剑指offer之从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
在这里插入图片描述

返回:
[3,9,20,15,7]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:
这道题明显是二叉树的层序遍历。首先定义一个队列,将二叉树的根节点入队,当队列非空,访问队首元素,然后判断其左右孩子是否为空,不为空的话,入队。
代码:

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

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

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

相关文章

小米真蓝牙耳机说明书_小米真无线蓝牙耳机Air2 SE评测:仅需169元,享受随心畅听体验...

继小米真无线蓝牙耳机Air 2、小米真无线蓝牙耳机Air 2S之后&#xff0c;小米公司又于2020年5月19日再次推出了一款售价更为亲民的真无线蓝牙耳机新品——小米真无线蓝牙耳机Air2 SE&#xff0c;该机不仅延续了小米真无线蓝牙耳机Air 2系列的外观设计&#xff0c;支持开盒弹窗、…

引用与指针的区别

虽然指针和引用都可以完成对其他对象的间接访问&#xff0c;但是还是有很多不同之处&#xff1a; 1.本身是否是对象 指针本身就是一个对象&#xff0c;而引用本身不是一个对象。因此允许对指针赋值和拷贝&#xff0c;可以定义对指针的引用&#xff0c;已经指向指针的指针&#…

三点外接圆_故地重游伪切圆——伪外接圆的基本性质

在思考一个有关于伪外接圆的等角线问题时&#xff0c;我回想起伪外接圆的一道小题目&#xff0c;这是2012年罗马尼亚大师杯的第六题&#xff0c;这道题目直接以结论的形式呈现出了伪外接圆的基本性质&#xff0c;是一道入门伪外接圆必做的精巧小题。当然有些读者可能从未见过&q…

C++的const限定符

const限定符总是让人很头疼&#xff0c;下面讲解一下几个比较容易混淆的概念&#xff1a; 对常量的引用&#xff08;常量引用&#xff09;&#xff1a; 一般情况下&#xff0c;引用的类型要与其所引用的对象的类型一致&#xff0c;其中的例外情况就是&#xff0c;当初始化常量…

Linux学习:第五章-Linux用户和用户组管理

一用户管理命令用户信息文件&#xff1a;/etc/passwd aa:x:501:501::/home/aa:/bin/bash 第一列&#xff1a;用户名 第二列&#xff1a;密码标志 第三列&#xff1a;UID用户ID 0管理员 1-499系统用户&#xff08;伪用户&#xff09; 500普通用户 第四列&#xff1a;GID初始组ID…

一点等于多少厘米_马桶知识介绍,你了解马桶多少

我们可能并不了解我们经常运用的马桶&#xff0c;认为马桶便是简简单单的规划&#xff0c;没什么技术含量。其实不然&#xff0c;马桶的规划也包含了不少物理学原理。假如你家里的马桶出现毛病&#xff0c;首先要排查毛病的原因&#xff0c;但是假如不了解马桶结构图那就很难把…

动态内存分配与智能指针

内存分配&#xff1a; 静态存储区&#xff1a; 局部static对象类的static数据成员定义在任何函数之外的变量 栈区&#xff1a; 函数内的非static对象 动态内存分配的方式有&#xff1a; new和delete智能指针&#xff08;shared_ptr、unique_ptr、weak_ptr&#xff09;all…

1151压力变送器型号_日本进口横河EJA530E压力变送器型号解读!

横河EJA变送器对大家来说也许不陌生&#xff0c;但是对于EJA变送器的型号很多人还不是很懂&#xff0c;因为一个全型号代表这很多参数&#xff0c;每一个字母和每一个数字背后都是一个准确的参数&#xff0c;我们在选型的时候要提供必要的参数&#xff0c;更具参数选出合适的型…

plc控制可调节阀流程图_PLC控制的水箱液位控制系统毕业论文

内容介绍原文档由会员 莎士比亚 发布论文标准WORD格式排版40页摘要在人们生活以及工业生产等诸多领域经常涉及到液位和流量的控制问题, 例如居民生活用水的供应, 饮料、食品加工, 溶液过滤, 化工生产等多种行业的生产加工过程, 通常需要使用蓄液池, 蓄液池中的液位需要维持合适…

idea继承后重新方法快捷键_idea 查看类继承关系的快捷键

类似eclipse ctrlt的快捷键,idea中是ctrlH…找到对应的类 查看类关系图…1.在想要查看的类上按 Ctrl H -> Diagrams -> Show Diagrams -> Java Class Diagrams -> Show Implementations -> Ctrl A -> 右击一下 -> Enter .…打开想要查看的接口或者类文件…

怎样在数组末尾添加数据_如何利用C++实现可变长的数组?

应该执行什么功能&#xff1f;假设我们要实现一个将自动扩展的数组类&#xff0c;是否需要实现函数&#xff1f;让我们从下面主要功能使用的功能开始&#xff0c;看看我们需要实现哪些功能。输出结果&#xff1a;0 1 2 3 40 1 2 100 4您需要做什么才能实现上述功能&#xff1f;…

Linux学习:第六章-Linux服务和进程管理

一进程查看 1psaux查看当前系统所有运行的进程 -a显示前台所有进程 -u显示用户名 -x显示后台进程 user&#xff1a; 用户名 pid&#xff1a;进程id。PID1init系统启动的第一个进程 %CPUcpu占用百分比 %MEM内存占用百分比 VSZ虚拟内存占用量KB RSS固定内存占有量 tty登录终端tty…

覆盖索引与联合索引_浅析MySQL的索引覆盖和索引下推

写在前面在MySQL数据库中&#xff0c;索引对查询的速度有着至关重要的影响&#xff0c;理解索引也是进行数据库性能调优的起点&#xff0c;索引就是为了提高数据查询的效率。今天我们来聊聊在MySQL索引优化中两种常见的方式&#xff0c;索引覆盖和索引下推索引覆盖要了解索引覆…

python3 输入输出_Python3基础之输入和输出实例分析

通常来说&#xff0c;一个Python程序可以从键盘读取输入&#xff0c;也可以从文件读取输入&#xff1b;而程序的结果可以输出到屏幕上&#xff0c;也可以保存到文件中便于以后使用。本文就来介绍Python中最基本的I/O函数。一、控制台I/O1.读取键盘输入内置函数input([prompt])&…

redis 哨兵 异步_突破Java面试(23-8) - Redis哨兵主备切换的数据丢失问题-阿里云开发者社区...

1 数据丢失的两个场景主备切换的过程&#xff0c;可能会导致数据丢失1.1 异步复制由于 master > slave的复制是异步的&#xff0c;所以可能有部分数据还没复制到slave&#xff0c;master就宕机&#xff0c;于是这些数据就丢失了1.2 脑裂导致脑裂&#xff0c;也就是说&#x…

vue 断开正在发送的请求_vue 发送请求频繁时取消上一次请求

前言&#xff1a;在项目中经常有一些场景会连续发送多个请求&#xff0c;而异步会导致最后得到展示的结果可能不是最后一次发送请求返回的结果&#xff0c;且对性能也有非常大的影响。场景&#xff1a;列表式切换商品&#xff0c;有时候上一次请求的结果非常慢&#xff0c;而我…

Linux学习:第六章-Linux网络配置

上一章的补充&#xff1a; 常见网络端口&#xff1a; 2021ftp服务文件共享 22ssh服务安全远程网络管理 23telnet服务 25smtp&#xff1a;简单邮件传输协议发信 110pop3&#xff1a;邮局协议收信 80www网页服务 3306mysql端口 3389windows终端服务 53DNS端口 /etc/services所有系…

sequelize 增加数据库字段_Node项目使用Sequelize操作数据库(一)(包括模型,增,删、改等)...

Sequelize 是一个基于 Promise 的 Node.js ORM&#xff0c;目前支持 Postgres、MySQL、SQLite 和 Microsoft SQL Server。它具有强大的事务支持&#xff0c;关联关系、读取和复制等功能。所谓ORM是指对象关系映射&#xff0c;通过使用描述对象和数据库之间映射的元数据&#xf…

django orm插入一条_如何通过django的ORM远程发布文章?

利用django的ORM可以方便的给数据库插入文章但是假如我django放在阿里云&#xff0c;那我想在本地写个插件&#xff0c;每天很方便的插入一些数据&#xff0c;最好是通过ORM的&#xff0c;因为管理起来比较方便&#xff0c;会涉及到多个站&#xff0c;可能会有200多个站&#x…

循环斐波那契数列_第五课:斐波那契数列(第一课时)

简介&#xff1a;又称黄金分割数列、因数学家列昂纳多斐波那契以兔子繁殖为例子而引入&#xff0c;故又称为“兔子数列”&#xff0c;指的是这样一个数列&#xff1a;1、1、2、3、5、8、13、21、34……在数学上&#xff0c;斐波那契数列以如下被以递推的方法定义&#xff1a;F(…