目录

一、题目

1、原题链接

2、题目描述

二、解题报告

1、思路分析

2、时间复杂度

3、代码详解

三、知识风暴


一、题目

1、原题链接

力扣

2、题目描述

给你二叉树的根节点 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

二、解题报告

思路来源:讲透二叉树的层序遍历 | 广度优先搜索 | LeetCode:102.二叉树的层序遍历_哔哩哔哩_bilibili

卡哥yyds

1、思路分析

1)可以利用队列来进行层序遍历。

2)如果根结点为空,则直接返回结果数组;如果根结点非空,在每次遍历一层的过程中,针对该层中的每个结点,首先将结点入队,然后将该结点存下来,结点出队,用记录结点的变量来访问该节点的数值,并存到一维数组中,如果该结点有孩子,则将其对应的左/右孩子结点入队,直到遍历完该层结点。然后再以同样方式遍历下一层结点,直到队列为空(代表已经遍历完所有元素)。用lq来记录当前层的结点个数,针对每层,将每层遍历的结点的值存入一维数组中,每遍历完一层,再将该数组存入二维结果数组中,用来结果的返回。

3)注意lq不能用q.size()来代替,因为队列大小一直在变化,队列中会进入其他层的结点,我们只是用lq来记录当前遍历层的结点个数。

4)模拟上述过程,返回结果数组,即为所求。

2、时间复杂度

时间复杂度为O(n)

3、代码详解

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

三、知识风暴

clear();//删除vector容器中的所有元素

【代码随想录】LC 102. 二叉树的层序遍历相关推荐

  1. 代码随想录算法训练营第十三天|102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树

    链接:代码随想录 文章目录 102.二叉树的层序遍历 226.翻转二叉树 101.对称二叉树 解题方法 题目思路 示例代码 总结 解题思路 1.102.二叉树的层次遍历 解题思路 递归法,创立二维数组 ...

  2. 代码随想录算法训练营第15天,102.二叉树的层序遍历、226.翻转二叉树、101.对称二叉树

    102.二叉树的层序遍历.226.反转二叉树.101.对称二叉树 102.二叉树的层序遍历 二叉树的层次遍历,我们可以定义一个队列, 当访问到某一个节点时,我们将它存在的左右节点放入队列中,便可达到按 ...

  3. 代码随想录算法训练营day15 | 102. 二叉树的层序遍历、226. 翻转二叉树、101. 对称二叉树

    102. 二叉树的层序遍历 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {de ...

  4. 代码随想录算法训练营第十五天 | 102. 二叉树的层序遍历 | 226.翻转二叉树 | 101. 对称二叉树

    递归三部曲 确定递归函数的参数和返回值 确定终止条件 确定单层递归的逻辑 102. 二叉树的层序遍历 题解及想法 解法一 :递归法 class Solution {public List<Lis ...

  5. LeetCode Algorithm 102. 二叉树的层序遍历

    102. 二叉树的层序遍历 Ideas 二叉树的层序遍历类似于图的广度优先搜索,都是要借助队列这种数据结构来实现. 首先将根节点添加到队列中,然后就是套BFS的模板,稍微改动一下. 只要队列不为空就循 ...

  6. 102. 二叉树的层序遍历 golang

    102. 二叉树的层序遍历 给你一个二叉树,请你返回其按 层序遍历 得到的节点值. (即逐层地,从左到右访问所有节点). 示例: 二叉树:[3,9,20,null,null,15,7], 3/ \9 ...

  7. 【LeetCode】【HOT】102. 二叉树的层序遍历(队列)

    [LeetCode][HOT]102. 二叉树的层序遍历 文章目录 [LeetCode][HOT]102. 二叉树的层序遍历 package hot;import java.util.ArrayLis ...

  8. LeetCode 102二叉树的层序遍历103二叉树锯齿形遍历104二叉树的最大深度

    微信搜一搜:bigsai 大家都在关注的刷题.学习数据结构和算法宝藏项目 关注回复进群即可加入力扣打卡群,欢迎划水.近期打卡: LeetCode 97交错字符串(动态规划) LeetCode 98验证 ...

  9. 32、用队列实现层序遍历-102.二叉树的层序遍历

    题目描述: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 . (即逐层地,从左到右访问所有节点). 思路:之前在剑指Offer中做过 使用队列先入先出的性质,实现层序遍历! DFS(深度优 ...

最新文章

  1. Vuejs自定义全局组件--loading
  2. 也说电影《魔比斯环》
  3. 直击“上云”痛点的 MSP 新生意,万博智云发布云原生迁移工具 HyperMotion 3.0
  4. Linux的网络协议族是什么,Linux 网络协议的概述
  5. Mybatis源码日志模块分析
  6. 安卓查看php文件是否存在,Android_Android编程判断SD卡是否存在及使用容量查询实现方法,本文实例讲述了Android编程判断 - phpStudy...
  7. 让div跟着鼠标移动
  8. 输出ipv4,ipv6特定段的所有地址,ipv6地址转换成网络字节序
  9. 脚本 - EXCEL
  10. reviewboard 安装
  11. 批量将所有文件按照文件名中的扩展名后缀进行分类整理
  12. 【imx6ul】从头搭建imx6ul开发环境(uboot、内核编译及烧入、mfgtools详细使用方法)
  13. 【python】耗时统计小程序
  14. nodejs使用Moment.js操作日期时间
  15. Kubuntu简易安装教程(压缩磁盘版)
  16. Phobos Runtime Library
  17. 【电子书+代码】Sklearn,Keras与Tensorflow机器学习实用指南
  18. 删除U盘里的小黄片吧!教你如何制作U盘木马
  19. 让opencv输出人脸检测的得分(置信率),找出一些和脸比较像但是不是脸的负样本
  20. 2019年广东工业大学腾讯杯新生程序设计竞赛(同步赛)I-迷途的怪物

热门文章

  1. linux 查看系统性能总结
  2. 弘辽科技:淘宝违规店铺会降权吗?扣12分降权多久?
  3. linux进程号是几位数,Linux 进程 PID 编号最大为多少
  4. python sleep什么意思_python中from time import sleep是什么意思
  5. android 8 呼吸灯,小米8se呼吸灯可以设置颜色吗 小米8se呼吸灯颜色在哪设置
  6. 删除virbr0虚拟网卡
  7. slax linux 安装到硬盘,将Slax/Fanx安装到硬盘并添加启动项的方法(转)
  8. Eclipse调试不能进入断点 ,在某个工程断点无效
  9. MES系统价格与选型有什么关系
  10. python做三维图片挑战眼力_腾讯实习挑战赛30强WriteUp