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

news/2024/11/28 8:42:22/

102. 二叉树的层序遍历

题目:

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

整体思路:

层次遍历 从左到右按层输出到一个数组里

        两个问题:1.正确输出节点

                          2.按层输出,每层是一个数组,整体放在一个数组里输出

        1.利用一个辅助队列,有节点就存入队列中,利用先入先出的原则,从左往右存入就会从左往右输出。每次从队列中弹出一个节点,记为front。看这个front有没有左孩子,如果有左孩子把左孩子放入到队列中,如果front有右孩子,把右孩子放入到队列中。重复,直到队列为空。

        2.根据每次的队列长度我们就知道存入的数组的数是几个(每一层的数组),然后队列为空之前的数组就是输出的大数组

代码:

/*** 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>>ans;//答案if(!root) return ans;//没有节点直接输出queue<TreeNode*>que;//辅助队列que.push(root);//将头节点存入队列while(!que.empty()){//重复寻找左右节点,直到队列为空int size = que.size();//每一次队列的长度//注意:不可以在for循环里直接i < que.size()。因为这样队列的长度只是第一次的不更新ans.push_back(vector<int>());//先存入一个数组(但是没有数)//因为ans.back().push_back()使用的前提是数组不为空for(int i = 0; i < size; i++){//循环遍历当前队列长度TreeNode* front =  que.front();que.pop();ans.back().push_back(front -> val);//将这个长度的数组存入数组中//第二次再存入的就是第二个数组,依次类推if(front -> left) que.push(front -> left);//有左节点,在队列中存入左节点if(front -> right) que.push(front -> right);//有右节点,在队列中存入右节点}}return ans;//输出数组}
};


http://www.ppmy.cn/news/1550568.html

相关文章

Top 10 Tools to Level Up Your Prompt Engineering Skills

此文章文字是转载翻译&#xff0c;图片是自已用AI 重新生成的。文字内容来自 https://www.aifire.co/p/top-10-ai-prompt-engineering-tools 供记录学习使用。 Introduction to AI Prompt Engineering AI Prompt Engineering 简介 1&#xff0c;Prompt Engineering 提示工程…

CSS之3D转换

三维坐标系 三维坐标系其实就是指立体空间&#xff0c;立体空间是由3个轴共同组成的。 x轴:水平向右注意:x右边是正值&#xff0c;左边是负值 y轴:垂直向下注意:y下面是正值&#xff0c;上面是负值 z轴:垂直屏幕注意:往外面是正值&#xff0c;往里面是负值 3D移动 translat…

C++第28课-布隆过滤器的介绍

目录 1.布隆过滤器概念 2. 实现原理 3、布隆过滤器的实现 3.1、基本结构 3.2、插入 3.3、查找 4.布隆过滤器的查找 5.布隆过滤器删除 6.如何选择哈希函数个数和布隆过滤器长度 7、测试 8.布隆过滤器小结 布隆过滤器优点 布隆过滤器缺陷 8、海量数据面试题&#xff…

NLP 2、机器学习简介

人生的苦难不过伏尔加河上的纤夫 —— 24.11.27 一、机器学习起源 机器学习的本质 —— 找规律 通过一定量的训练样本找到这些数据样本中所蕴含的规律 规律愈发复杂&#xff0c;机器学习就是在其中找到这些的规律&#xff0c;挖掘规律建立一个公式&#xff0c;导致对陌生的数…

JVM_垃圾收集器详解

1、 前言 JVM就是Java虚拟机&#xff0c;说白了就是为了屏蔽底层操作系统的不一致而设计出来的一个虚拟机&#xff0c;让用户更加专注上层&#xff0c;而不用在乎下层的一个产品。这就是JVM的跨平台&#xff0c;一次编译&#xff0c;到处运行。 而JVM中的核心功能其实就是自动…

Windows远程连接桌面报错“由于没有远程桌面授权服务器可以提供许可证,远程会话连接已断开。请跟服务器管理员联系

摘要 windows server配置了多用户登录&#xff0c;默认自动生成的连接许可证有效日期为120天&#xff0c;超过了这个时间后&#xff0c;用户将不能远程连接服务器。 需要配置多用户服务器&#xff0c;进行获取许可 问题 解决方法 1、win键R打开运行器&#xff0c;使用mstsc …

人工智能走向外太空,成为开发宇宙的未来工具

姓名&#xff1a;赵子健 学号&#xff1a;22021211991 转载自&#xff1a;https://zhuanlan.zhihu.com/p/30991758 【嵌牛导读】人工智能走向外太空&#xff0c;成为开发宇宙的未来工具 【嵌牛鼻子】人工智能 外太空 开发宇宙 未来工具 【嵌牛提问】人工智能是否适用于外太空…

YOLO的框架及版本迭代

YOLO&#xff08;You Only Look Once&#xff09;是一种非常流行的实时目标检测算法&#xff0c;其特点是将目标检测任务转换为一个回归问题&#xff0c;通过一次前向传播就可以同时完成目标的分类和定位。以下是YOLO框架的整体架构和工作原理&#xff1a; 一、YOLO的基本框架…