首页 > 其他分享 >leetcode 102. 二叉树的层序遍历

leetcode 102. 二叉树的层序遍历

时间:2024-07-06 19:30:37浏览次数:17  
标签:遍历 java 层序 que 二叉树 102 null root 节点

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

java 解题思路及代码实现

package com.java.leetcode.tree;

import com.java.leetcode.compent.TreeNode;

import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.List;
import java.util.Queue;

/**
 * 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
 *
 *
 *
 * 示例 1:
 *
 *
 * 输入:root = [3,9,20,null,null,15,7]
 * 输出:[[3],[9,20],[15,7]]
 * 示例 2:
 *
 * 输入:root = [1]
 * 输出:[[1]]
 * 示例 3:
 *
 * 输入:root = []
 * 输出:[]
 */

public class levelOrder102 {
    /**
     * 思路 层序遍历 即图论中的广度优先遍历,对于层序遍历 不难理解 是一层一层的遍历每一层的所有节点
     * 那么便有 获取一层处理一层 处理完该层  ,然后处理下一层结果
     * 那么处理此类数据就是顺序一层一层处理 和queue 先进先出 的逻辑相同
     * 那么就有 以下思路
     *   处理某一层 节点 记录该节点值 存入 list 中
     *   并将该节点的左右节点填入queue 中,那么 如何判断该层节点是否已经处理完了 就需要有个变量 size 来记录存入对列的节点数
     *   处理该层节点时 size 是否为 0 来判定该层节点有没有处理完成
     * @param root
     * @return
     */
        public List<List<Integer>> levelOrder(TreeNode root) {
            List<List<Integer>> list=new ArrayList<>();
            ArrayDeque<TreeNode> que=new ArrayDeque<>();
            if(root==null){
               return list;
            }
            //初始化
            que.offer(root);
            while(!que.isEmpty()){
               // 开始处理节点
                List<Integer> tmp=new ArrayList<>();
                int size= que.size();
                while(size>0){
                    TreeNode node=que.poll();
                    tmp.add(node.getVal());
                    size--;
                    if(node.getLeft()!=null){
                        que.offer(node.getLeft());
                    }
                    if(node.getRight()!=null){
                        que.offer(node.getRight());
                    }
                }
                list.add(tmp);
            }
       return list;
    }
}

标签:遍历,java,层序,que,二叉树,102,null,root,节点
From: https://blog.csdn.net/weixin_42538861/article/details/140182173

相关文章

  • 二叉树的顺序存储
    目录顺序存储:简介:节点的位置关系:优缺点:优点:缺点:二叉树顺序存储的模拟实现:向上调整算法:向下调整算法:二叉树的初始化:直接初始化:建堆初始化:二叉树的头删:二叉树的尾插:二叉树的取顶端元素:二叉树的判空:二叉树的销毁:完整代码:顺序存储:简介:顺序结构存储就是使......
  • 代码随想录day15 平衡二叉树 | 二叉树的所有路径 | 左叶子之和 | 完全二叉树的节点个
    平衡二叉树平衡二叉树解题思路二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。这道题由于需要求节点的高度差来进行判断,因此我们需要用后序遍历,先左右,后中间。推荐使用递归把每个节点的高度算出来......
  • 代码随想录算法训练营第十五天|110.平衡二叉树、257.二叉树的所有路径、404.左叶子之
    110平衡二叉树1classSolution{2public:3intGetHeight(TreeNode*root){4if(!root){5return0;6}7intleftHeight=GetHeight(root->left);8if(leftHeight==-1)ret......
  • python数据结构(树和二叉树)
    树非线性结构一对多根结点(无前驱)多个叶子结点(无后继)其他数据元素(一个前驱,多个后驱)树与二叉树转换树与二叉树均可用二叉链表作为存储结构,则以二叉链表为媒介可导出树之间的一个对应关系-----即给定一颗树,可以找到唯一一颗二叉树与之对应。把树转化为二叉树步骤一:加线......
  • 代码随想录算法训练营第十四天| 226.翻转二叉树 、101. 对称二叉树、104.二叉树的最大
    二叉树学习2226题翻转二叉树,改一下前序递归遍历,每次遍历的时候都调换一下左右结点即可。classSolution{public:voidpreorder(TreeNode*root){if(root==nullptr){return;}TreeNode*tmp;tmp=root->left;......
  • [1022] Activate specific apps using keyboard shortcuts
    Thisisaverygoodone!!! TaskbarShortcutKeys:Ifanappispinnedtoyourtaskbar,youcanusethefollowingshortcut:PressWin+1toactivatethefirstprogramonthetaskbar(orlaunchitifit’snotopen).Similarly,Win+2activatesthesec......
  • 代码随想录算法训练营第十三天|今天量大管饱144、145、94、102、107、199、637、429、
    今天来处理二叉树part1、2、3,顶级享受,一次到位。完全二叉树和满二叉树概念没问题。二叉搜索树,左子树所有结点的值小于它的根结点的值,右子树上所有结点的值大于它的根结点的值平衡二叉搜索树,它是一棵空树或它的左右两个子树的高度差的绝对值不超过1。二叉树的存储方式:链式存储......
  • 洛谷 P1020 [NOIP1999 提高组] 导弹拦截
    题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所......
  • 每日一题:Leetcode-102 二叉树的层序遍历
    力扣题目解题思路java代码力扣题目:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。(即逐层地,从左到右访问所有节点)。示例1:输入:root=[3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例2:输入:root=[1]输出:[[1]]示例3:输入:root=[]输出:[]......
  • P10218 [省选联考 2024] 魔法手杖 题解
    题目描述:给定序列\(a_1,\cdots,a_n\)和\(b_1,\cdots,b_n\),满足\(a_i\in[0,2^k-1],b_i\ge0\),你需要给出\(S\subseteq\{1,\cdots,n\}\)和\(x\in[0,2^k-1]\)满足:\(\sum\limits_{i\inS}b_i\lem\)。最大化\(val(S,x)=\min\big(\min\limits_{i\inS......