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

leetcode0102. 二叉树的层序遍历-medium

1 题目:二叉树的层序遍历

官方标定难度:中

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

示例 1:

在这里插入图片描述

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

示例 2:

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

示例 3:

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

提示:

树中节点数目在范围 [0, 2000] 内
-1000 <= Node.val <= 1000

2 solution

层序遍历,可以采用广度优先搜索,逐层往下即可。

代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode *root) {if (!root) return {};vector<vector<int>> result;vector<TreeNode *> q;q.push_back(root);result.push_back({root->val});int last_pos = 0; // 一层的结束位置vector<int> layer;for (int i = 0; i < q.size(); i++) {if (q[i]->left) {q.push_back(q[i]->left);layer.push_back(q[i]->left->val);}if (q[i]->right) {q.push_back(q[i]->right);layer.push_back(q[i]->right->val);}if (i == last_pos) {result.push_back(layer);layer.clear();last_pos = q.size() - 1;}}result.pop_back();return result;
}};

结果

在这里插入图片描述

相关文章:

  • Linux安装ffmpeg7.1操作说明
  • Linux之彻底掌握防火墙-----安全管理详解
  • Python项目--基于计算机视觉的手势识别控制系统
  • 学习笔记(C++篇)--- Day 4
  • vue项目打包后点击dist下面index.html(无法访问您的文件该文件可能已被移至别处、修改或删除。ERR_FILE_NOT_FOUND)比如若依
  • Spark论述及其作用
  • 在Notepad++中使用NppAtyle插件格式化代码
  • AI飞行行为的可解释性与合规审计机制设计
  • 6.3.JVM调优与内存管理
  • 数据通信学习笔记之OSPF的基础术语-距离矢量路由协议
  • Git简介与入门
  • 前端热门面试题day1
  • 建筑安全员 A 证与 C 证:差异决定职业方向
  • 网页设计规范:从布局到交互的全方位指南
  • MySQL 8 自动安装脚本(CentOS-7 系统)
  • 【场景应用13】simple_nlp_example:简单自然语言处理示例
  • 制作一款打飞机游戏19:碰撞检测
  • 网站架构演进之路:从单体到垂直,再到缓存优化
  • C++初阶-类和对象(下)
  • 大语言模型中的幻觉现象深度解析:原理、评估与缓解策略
  • 停止水资源共享、驱逐武官,印度对巴基斯坦宣布多项反制措施
  • 全国双拥模范城(县)名单
  • 人民日报首推“大地书单”,10本好书上榜!
  • 创单次出舱活动时长世界纪录,一组数据盘点神十九乘组工作成果
  • 拍北京地铁上的读书人第七年:数字风吹散读书人了吗?
  • 5旬辅警30余年前被人顶替上中专?河南沁阳:基本属实,将依法处理