当前位置: 首页 > news >正文

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.lryc.cn/news/310966.html

相关文章:

  • Java底层自学大纲_JVM篇
  • 数据可视化?这些平台能处
  • [ai笔记14] 周鸿祎的ai公开课笔记1
  • 在Linux系统中创建新用户并登录
  • Vue.js+SpringBoot开发高校实验室管理系统
  • 文献阅读笔记《Spatial-temporal Forecasting for Regions without Observations》13页
  • 如何学习openfoam
  • vue前端密码加密,springboot后端密码解密
  • selenuim【1】$x(‘xpath’)、WebDriverWait()、try/assert
  • 机器学习模型总结
  • HTML5:七天学会基础动画网页6
  • mybatis中#{}和${}的区别?
  • 常用git 打tag命令
  • Learning from Unlabeled 3D Environments forVision-and-Language Navigation
  • 【算法分析与设计】组合
  • 数仓模型设计方法论
  • MySQL 面试题
  • 计算机专业必看的十部电影
  • 数据库之间数据迁移工具datax
  • uniapp:根据环境(开发、测试、生产)选择服务器接口或者业务
  • Leetcode—63. 不同路径 II【中等】
  • Redis 之三:Redis 的发布订阅(pub/sub)
  • ngx_waf入门教程:保护你的Nginx服务器
  • 视觉Transformers中的位置嵌入 - 研究与应用指南
  • 真香定律!我用这种模式重构了第三方登录
  • Linux入门到入土
  • 基础真空技术外国文献Fundamentals of Vacuum Technology
  • LeetCode每日一题【c++版】- 用队列实现栈与用栈实现队列
  • 深入理解快速排序算法:从原理到实现
  • 设计模式----装饰器模式