二叉树的层序遍历-Java

article/2025/9/18 18:57:23

目录

一、题目描述

二、运行结果

三、解题思路

四、代码


一、题目描述

本文代码为力扣102题解题代码,也是通用的二叉树层次遍历代码:

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

示例 1:


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

输入:root = [1]
输出:[[1]]
示例 3:

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

二、运行结果

三、解题思路

层序遍历是二叉树中比较典型的一个算法,需要用到一个辅助队列,思路是对二叉树的节点进行逐层处理。首先将头结点入队,头结点所在的层必定只有一个节点,每次求队列的长度得到的就是当前层二叉树节点的个数,然后逐个处理当前层结点(保存结点值,将其左右孩子结点入队(如果非空)),每处理完一个队头节点之后,就将其出队,这样就保证了处理完当前层后,队列中的所有结点都是下一层的结点,并且是按照从左到右的顺序排列,重复上述处理过程,直至队列为空。

四、代码

class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<List<Integer>> ans = new ArrayList<>(); //初始化二维列表if(root == null)return ans;Deque<TreeNode> d = new ArrayDeque<TreeNode>(); //辅助队列,存放每层节点d.addLast(root);while(!d.isEmpty()){int size = d.size();  //当前层的节点数List<Integer> list = new ArrayList<Integer>();for(int i=0; i<size; ++i){TreeNode node = d.pollFirst(); //取出队列的头节点list.add(node.val);if(node.left != null)d.addLast(node.left);if(node.right != null)d.addLast(node.right);}ans.add(list);  //一层的节点}return ans;}
}


http://chatgpt.dhexx.cn/article/LL7q3KrB.shtml

相关文章

102 二叉树层序遍历

层序遍历&#xff0c;每次层的输出是是一个一维数组&#xff0c;整个二叉树的输出结果是二维数组 BFS遍历&#xff0c;依托于队列结构&#xff0c;每次在根节点出栈的时候&#xff0c;将其值加在结果列表中&#xff0c;然后将他的左右孩子节点入队列。 层序遍历相对于BFS&…

【LeetCode102. 二叉树的层序遍历】——层序遍历

102. 二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[9,20],[15,7]]示…

层序遍历总结

以 LeetCode102 作为例子&#xff1a; 题目描述 思路描述 层序遍历需要用到的数据结构是队列。需要考虑的问题是&#xff1a;如何标识当前节点的层数。 有以下三种方法&#xff1a; 方法 1 将每个节点表示为一个二元组 (node, level)&#xff0c;这种方法效率太低&#xff…

层序遍历?看这一篇就够了!

点关注不迷路 1.树的层序遍历 顾名思义&#xff0c;对于树型结构&#xff0c;层序遍历就是按层从上到下&#xff0c;每层按一定顺序对树的节点进行遍历。我们通过如图所示的二叉树进行说明&#xff1a;对于左边的二叉树&#xff0c;按层划分后可得到右边的分层结构。 如果按照…

二叉树遍历——层序遍历

目录 1.什么是层序遍历&#xff1f; 2.实现思路 3.代码实现 1.什么是层序遍历&#xff1f; 就是将一颗树按照每一层每一层的方式进行遍历 例如这棵树&#xff0c;进行层序遍历的结果应该是 那么我们该怎样去实现呢&#xff1f; 2.实现思路 利用队列先进先出的思想去实现 …

【二叉树 Java】二叉树的层序遍历

一、层序遍历定义&#xff1a; 按照每层进行遍历&#xff0c;从左至右&#xff0c;从上至下遍历树的节点&#xff0c;如下图所示 二、题目描述&#xff1a; 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所…

二叉树----层序遍历

1.层序遍历 层序遍历:层序遍历即逐层按顺序遍历二叉树的各个节点,故层序遍历又叫广度优先遍历. 如图:广度优先遍历即按ABCDEFGH的顺序遍历 2.解题思路 1.这里我们利用队列先进先出的结构特点,当我们在队列中弹出一个树的节点时,我们便把树的左孩子和右孩子入到队列之中.(如果父…

二叉树的层序遍历

二叉树的层序遍历 1.层序遍历2.实例2.1二叉树的层序遍历2.2 二叉树的层序遍历 II2.3 二叉树的右视图2.4 二叉树的层平均值2.5 N叉树的层序遍历2.6在每个树行中找最大值2.7二叉树的最大深度2.8二叉树的最小深度2.9翻转二叉树2.10完全二叉树的节点个数2.11左叶子之和2.11找树左下…

二叉树的遍历——层序遍历

一、之前写了二叉树的三种遍历方法&#xff1a;有先序遍历、中序遍历、后序遍历&#xff0c;这三种方法都是用递归的方式来遍历二叉树的。层序遍历则不是使用递归来遍历&#xff0c;而是使用队列的来实现遍历&#xff1a; void LevelTreeOrder(BTNode* root) {Queue q;QueueIni…

【机器学习】LDA算法 (主题模型算法)

随着互联网的发展&#xff0c;文本分析越来越受到重视。由于文本格式的复杂性&#xff0c;人们往往很难直接利用文本进行分析。因此一些将文本数值化的方法就出现了。LDA就是其中一种很NB的方法。 LDA有着很完美的理论支撑&#xff0c;而且有着维度小等一系列优点。本文对LDA算…

LDA算法和PCA算法的总结(原理和思想)

LDA和PCA的对比(并没有公式推导&#xff0c;改日会写) 先补一补数学(不需要)&#xff1a; 方差——概率论和统计方差衡量随机变量或一组数据时离散程度的度量&#xff1b;概率论中方差用来度量随机变量和其数学期望之间的偏离程度。统计中的方差&#xff08;样本方差&#xff…

LDA算法原理及LDA与PCA的比较

1. LDA算法简介 LDA&#xff08;线性判别式分析 Linear Discriminant Analysis&#xff09;属于机器学习中的监督学习算法&#xff0c;常用来做特征提取、数据降维和任务分类。在人脸识别、人脸检测等领域发挥重要作用。LDA算法与PCA算法都是常用的降维技术。二者的区别在于&a…

LDA算法调研报告

LDA算法调研报告 1、LDA算法概述 本文所阐述的LDA算法全称为Latent Dirichlet Allocation&#xff08;网上没有标准的中文名称&#xff0c;我称之为潜在狄利克雷分配算法&#xff09;&#xff0c;不是线性判别分析算法&#xff08;Linear Discriminant Analysis&#xff09;。L…

【机器学习】LDA算法原理

问题 线性判别分析(Linear Discriminant Analysis,LDA)是机器学习中常用的降维方法之一,本文旨在介绍LDA算法的思想,其数学推导过程可能会稍作简化。 LDA的思想 ● LDA是一种线性的、有监督的降维方法,即每个样本都有对应的类别标签(这点和PCA不同)。 ● 主要思想:…

Spark机器学习-LDA算法09

LDA算法 LDA即文档主题生成模型,该算法是一种无监督学习 将主题对应聚类中心,文档作为样本,则LDA也是一种聚类算法 该算法用来将多个文档划分为K个主题,与Kmeans类似 LDA是一种基于概率统计的生成算法 LDA算法—种常用的主题模型,可以对文档主题进行聚类,同样也可以用…

LDA算法实现鸢尾花数据集降维

目录 1. 作者介绍2. LDA降维算法2.1 基本概念2.2 算法流程 3. LDA算法实现3.1 数据集介绍3.2 代码实现3.3 结果展示 1. 作者介绍 唐杰&#xff0c;男&#xff0c;西安工程大学电子信息学院&#xff0c;2022级研究生 研究方向&#xff1a;机器视觉与人工智能 电子邮件&#xff…

秒懂---LDA算法

线性判别分析LDA原理总结 在主成分分析&#xff08;PCA&#xff09;原理总结中&#xff0c;我们对降维算法PCA做了总结。这里我们就对另外一种经典的降维方法线性判别分析&#xff08;Linear Discriminant Analysis, 以下简称LDA&#xff09;做一个总结。LDA在模式识别领域&…

基于Sklearn实现LDA算法

文章目录 一、LDA算法二、sklearn实现LDA三、结果如图四、总结五、参考 一、LDA算法 1.线性判别分析&#xff08;Linear Discriminant Analysis, LDA&#xff09;方法常被用于数据预处理中的降维&#xff08;dimensionality reduction&#xff09;步骤。LDA在保证良好的类别区…

LDA算法推导

LDA算法是什么 简单地说LDA算法就是向低维度投影&#xff0c;让同一类别数据投影点更接近&#xff0c;不同类别数据点距离更远。 LDA原理 定义&#xff0c;已知 我们要把两类数据都投影到w直线上。 让不同类别的数据的类别中心之间的距离尽可能的大&#xff0c; 同一种类别数…