LeetCode102.二叉树的层序遍历

题目

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

示例

在这里插入图片描述

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

思路

  1. 创建一个队列(queue)用于存储待处理的二叉树节点。

  2. 将根节点放入队列中。

  3. 开始进行层序遍历:

  • 当队列不为空时,表示还有节点需要处理。
  • 每次处理一层的节点时,先获取当前队列的大小,这个大小即为当前层的节点数目。
  • 遍历当前层级的节点:
    • 依次取出队首的节点,将其值存入当前层级的结果中。
    • 如果该节点有左子节点,将左子节点加入队列。
    • 如果该节点有右子节点,将右子节点加入队列。
  1. 将每一层的节点值存入最终的结果中,直至队列为空,完成整个层序遍历。

Code

class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> result; // 存储层序遍历的结果if (root == NULL) {return result; // 如果根节点为空,直接返回空的结果}queue<TreeNode*> q;q.push(root); // 将根节点放入队列中// 开始进行层序遍历while (!q.empty()) {int level_size = q.size(); // 获取当前层级的节点数量vector<int> level_values;  // 存储当前层级节点的值// 遍历当前层级的节点for (int i = 0; i < level_size; i++) {TreeNode* node = q.front();q.pop(); // 出队level_values.push_back(node->val); // 存储当前节点的值// 将当前节点的子节点(如果存在)加入队列中if (node->left) {q.push(node->left);}if (node->right) {q.push(node->right);}}result.push_back(level_values); // 将当前层级的节点值存入最终结果中}return result;}
};

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

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

相关文章

文献阅读笔记《Spatial-temporal Forecasting for Regions without Observations》13页

目录 目录 目录 发行刊物 ABSTRACT 1 INTRODUCTION 2 RELATED WORK&#xff08;相关工作 2.1 Spatial-temporal Forecasting&#xff08;时空预测 2.2 Spatial-temporal Forecasting withIncomplete Data&#xff08;不完全数据的时空预测 2.3 Graph Contrastive Lear…

【数据分享】2001~2023年中国区域MOD17A3HGF GPP数据

各位同学们好&#xff0c;今天和大伙儿分享的是2001~2023年中国区域MOD17A3HGF GPP数据。如果大家有下载处理数据等方面的问题&#xff0c;您可以私信或评论。 Running, S., M. Zhao. <i>MODIS/Terra Net Primary Production Gap-Filled Yearly L4 Global 500m SIN Grid…

面试复盘——14

前言 无锡的一家企业&#xff0c;但是看Boss上面给的薪资不高还是要求硕士…面试体验很棒&#xff0c;hr、技术、三个人一起的。 一面 问技术栈&#xff0c;接触了Go多久&#xff0c;先前是用什么的。 Golang的切片、特点。 切片赋值的时候如果使用&#xff0c;是什么拷贝…

.NET高级面试指南专题十三【 单例模式介绍,用单例模式写个缓存器】

单例模式是一种常用的设计模式&#xff0c;其主要目的是确保一个类只有一个实例&#xff0c;并提供一个全局访问点。这在某些情况下很有用&#xff0c;特别是当系统中只应该存在一个实例时&#xff0c;如数据库连接、日志记录器、线程池等。 在C#中&#xff0c;实现单例模式有多…

第三百七十七回

文章目录 1. 概念介绍2. 实现方法2.1 maskFilter2.2 shader 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"两种阴影效果"相关的内容&#xff0c;本章回中将介绍如何绘制阴影效果.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概…

索引使用规则6——单列索引联合索引

1、单列索引 单列索引&#xff1a;即一个索引只包含单个列 举个例子 1.1、给phone和那么建立索引 create index index_name on tb_qianzhui(name); create index index_phone on tb_qianzhui(phone);1.2、查询发现可能的索引有好几个&#xff0c;但是最终选择了phone的索引…

wy的leetcode刷题记录_Day80

wy的leetcode刷题记录_Day80 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2024-3-2 前言 目录 wy的leetcode刷题记录_Day80声明前言2368. 受限条件下可到达节点的数目题目介绍思路代码收获 92. 反转链表 II题目介绍思路代码收获 2368…

代码随想录day11(1)字符串:反转字符串中的单词 (leetcode151)

题目要求&#xff1a;给定一个字符串&#xff0c;将其中单词顺序反转&#xff0c;且每个单词之间有且仅有一个空格。 思路&#xff1a;因为本题没有限制空间复杂度&#xff0c;所以首先想到的是用split直接分割单词&#xff0c;然后将单词倒叙相加。 但如果想让空间复杂度为O…

内存的检测与排查

内存&#x1f40e;的检测与排查 文章目录 内存&#x1f40e;的检测与排查查杀Java Web filter型内存马0x01 内存马简历史0x02 查杀思路0x03 内存马的识别0x04 内存马的查杀 查杀Java Web filter型内存马 0x01 内存马简历史 其实内存马由来已久&#xff0c;早在17年n1nty师傅的…

一文解决Onlyfans年龄验证问题(小白必看)

前言&#xff1a;很多用户在 OnlyFans 添加信用卡时&#xff0c;出现了年龄验证问题导致操作失败。出现这个问题的原因一是用国内邮箱注册了&#xff0c;二是绑卡时的 IP 有问题&#xff0c;会导致年龄验证、无法支付 OnlyFans 等问题。下面是一些逐步验证的步骤&#xff0c;供…

2、事件机制、DOM操作、jquery对尺寸操作、jquery添加和删除

一、事件机制 1、事件源.事件类型(事件处理程序) $(this)中的this不能加引号 $(#box).click(function () {$(this).css(background-color,blue)//点击颜色变为蓝色 })2、事件源.on/bind(事件类型&#xff0c;事件处理程序) $("#box").on(dbclick,function () {$(…

什么是Vue指令?请列举一些常见的Vue指令以及它们的用法

Vue.js 是一款流行的前端框架&#xff0c;它的指令&#xff08;Directives&#xff09;是 Vue.js 提供的一种特殊属性&#xff0c;用于在模板中对 DOM 元素进行直接操作。指令通常是以 v- 开头的特殊属性&#xff0c;用于响应式地将数据绑定到 DOM 元素上。 在 Vue 中&#xf…