力扣刷题 102.二叉树的层序遍历

目录

题干

解题思路

  总结与反思


题干

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

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]

示例 2:

输入:root = [1]
输出:[[1]]

示例 3:

输入:root = []
输出:[]

解题思路

层序遍历一个二叉树,就是从左到右一层一层的去遍历二叉树。我们需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑。

我们把根节点入队列 ,把根节点放入第一层的数组,再放入结果数组,将根节点的左右节点放入队列(空节点不入栈),将根节点从队列中弹出。现在队列里面包含了下一层所有的节点,为了遍历,我们需要计算队列的大小,然后遍历队列将每个元素放入这一层的数组,把左右节点入队列,弹出当前节点,遍历完后,将这一层的数组放入结果数组。

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> result;queue<TreeNode*> que;if(root != NULL){que.push(root);}while(!que.empty()){//建立每一层的数组vector<int> vec;// 如何判断每一层的个数//记录队列的大小int size = que.size();// 遍历队列,放入数组for(int i = 0; i < size; i++ ){//出队列第一个元素放入数组TreeNode* node = que.front();vec.push_back(node->val);//将左右节点入队列if(node->left) que.push(node->left);if(node->right) que.push(node->right);//将当前节点弹出que.pop();} // 将这一层的数组放入结果数组result.push_back(vec);}return result;}
};

  总结与反思

常见的错误 vector赋值方式

vector<int>a;
for(int i=0;i<10;++i){a[i]=i;}

因为下标只能用来获取已经存在的元素。

正确的写法是用 a.push_back(i)

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

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

相关文章

windows@命令行管理用户和用户组

文章目录 abstract命令行与用户管理一览这些命令的别名权限 创建新用户&#x1f60a;创建本地用户归入用户组(可选操作)Users组用户权限调整提升为管理员&#x1f60a; 查看用户属于哪些组FAQNew-LocalUser 执行报错 创建单个或少数用户的推荐做法创建大量测试用户的做法 补充查…

守护用户数据安全,共筑企业利益长城——遵循常州小程序安全防护指南

在数字化浪潮席卷各行各业的今天&#xff0c;小程序以其轻量化、便捷化的特点&#xff0c;成为连接企业和用户的桥梁&#xff0c;极大地提升了服务效率与用户体验。然而&#xff0c;随着用户数据价值日益凸显&#xff0c;小程序的安全防护工作显得尤为重要。常州小程序安全防护…

蓝桥杯练习题 —— 圆的面积(python)

# encoding utf-8 # 开发者&#xff1a;xxx # 开发时间&#xff1a; 21:45 # "Stay hungry&#xff0c;stay foolish." import math r int(input()) S math.pi*r*r print(format(S,".7f"))所用方法 format函数【四舍五入】 可以在print()打印处使用&…

闲鱼订阅监控/上新提醒

以前闲鱼推出过一款服务&#xff0c;叫做闲鱼助手&#xff0c;帮助用户快速显示最新发布的信息。当时我也开发过一款闲鱼助手的工具。 写一个闲鱼助手的助手工具_闲鱼助手源码-CSDN博客 但是时间并不是很长&#xff0c;该功能被取消了。 最近不知道闲鱼从哪个版本开始&#x…

如何在其他线程中安全地调用Unity的API?

前言 Unity的大部分API&#xff08;例如&#xff0c;与游戏对象交互&#xff0c;修改组件属性等&#xff09;都需要在主线程中调用。然而&#xff0c;有时你可能在另一个线程&#xff08;例如&#xff0c;网络请求&#xff0c;长时间运行的计算等&#xff09;中完成一些工作&am…

【LangChain学习之旅】—(15)工具和工具箱:LangChain中的Tool和Toolkits一览

【LangChain学习之旅】—(15)工具和工具箱:LangChain中的Tool和Toolkits一览 工具是代理的武器如何加载工具LangChain 支持的工具一览使用 arXiv 工具开发科研助理LangChain 中的工具箱一览使用 Gmail 工具箱开发个人助理工具是代理的武器 LangChain 之所以强大,第一是大模…

基于Python的自然语言的话题文本分类(V2.0),附源码

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

具有温度系数(Temperature)的Softmax函数

Softmax 函数 softmax 函数是一种激活函数&#xff0c;通常用作神经网络最后一层的输出函数。该函数是两个以上变量的逻辑函数的推广。 Softmax 将实数向量作为输入&#xff0c;并将其归一化为概率分布。 softmax函数的输出是与输入具有相同维度的向量&#xff0c;每个元素的…

C语言程序与设计——指针地址与main函数

指针变量 在C语言中&#xff0c;最重要的就是对于指针和地址的理解&#xff0c;因为C语言是更接近底层的编程语言&#xff0c;所以它可以允许开发者对内存操作&#xff0c;这也是区别于其它编程语言的一个重要特性。 如何对内存进行操作呢。我们知道在编程过程中&#xff0c;在…

题目:学习使用external的用法。

题目&#xff1a;学习使用external的用法。 There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should l…

JavaScript之闭包的实现原理和作用详解

闭包是JavaScript中强大而灵活的概念&#xff0c;它不仅可以解决作用域的问题&#xff0c;还能够实现函数式编程的一些特性。本文将详细解释JavaScript闭包的实现原理和作用&#xff0c;包括什么是闭包、闭包的实现原理、闭包的作用以及具体的代码示例。 1. 闭包的定义 闭包是指…

C++面试100问与自动驾驶100问

C的学习和面试其实是非常的不友好的&#xff0c;首先C的学习内容非常的多&#xff0c;其次C的面试不单单面试C的知识点&#xff0c;还有它的“七大姑八大姨”&#xff08;计算机网络、数据结构、算法、计算机组成原理、操作系统、编译、xxx的底层实现 and so on&#xff09;。 …

突破编程_前端_SVG(基础元素介绍)

1 rect 矩形 在 SVG 中&#xff0c;<rect> 元素用于创建圆形。 &#xff08;1&#xff09;基本语法 <rectx"x坐标"y"y坐标"width"宽度"height"高度"rx"可选&#xff1a;圆角x半径"ry"可选&#xff1a;圆角…

用可视化案例讲Rust编程5.用泛型和特性实现自适配绘制和颜色设置

上一节我们讲了用泛型实现返回结果&#xff0c;这一节我们来讲讲在函数签名里面使用泛型来对输入参数进行自适配。 先看UML设计图&#xff1a; 好吧&#xff0c;看起来有点复杂&#xff0c;我们一个个来解释。 首先定义的是一个生成绘图元素需要的参数结构,并且定义个特性&am…

Spring Security——09,解决跨域

解决跨域 一、SpringBoot配置二、配置SpringSecurity三、修改端口四、修改vue项目4.1 拿到token4.2 前端存储token4.3 前端请求头携带token 五、测试5.1 认证测试5.2 授权测试 一键三连有没有捏~~ 浏览器出于安全的考虑&#xff0c;使用 XMLHttpRequest对象发起 HTTP请求时必须…

day 74 js

js脚本 JS的作用&#xff1a; 描述显示的内容&#xff08;HTML&#xff09;修饰 HTML 标签&#xff08;CSS&#xff09;设置 HTML 标签的动作&#xff08;JS&#xff09;JS特点&#xff1a;基于对象的编程语言&#xff0c;通过浏览器解释执行作用&#xff1a;表单验证、改变标签…

使用阿里云服务器可以做什么?太多了

阿里云服务器可以干嘛&#xff1f;能干啥你还不知道么&#xff01;简单来讲可用来搭建网站、个人博客、企业官网、论坛、电子商务、AI、LLM大语言模型、测试环境等&#xff0c;阿里云百科aliyunbaike.com整理阿里云服务器的用途&#xff1a; 阿里云服务器活动 aliyunbaike.com…

LeetCode-热题100:763. 划分字母区间

题目描述 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。 返回一个表示每个字符串片段的长度的列表。…

AcWing 4. 多重背包问题 I

解题思路 相关思路 import java.util.Scanner; public class Main {public static void main(String[] args){Scanner scanner new Scanner(System.in);int N scanner.nextInt();int V scanner.nextInt();int v[] new int[N1];int w[] new int[N1];int s[] new int[N1];…

揭秘AI幻觉:GPT-4V存在视觉编码漏洞,清华联合NUS提出LLaVA-UHD

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 新建了免费的人工智能中文站https://ai.weoknow.com 新建了收费的人工智能中文站https://ai.hzytsoft.cn/ 更多资源欢迎关注 GPT-4V 的推出引爆了多模态大模型的研究。GPT-4V 在包括多模态问答、推理、交互在内的多个领…