leetcode 剑指 Offer 32 - II. 从上到下打印二叉树 II
时间:2022-07-22
本文章向大家介绍leetcode 剑指 Offer 32 - II. 从上到下打印二叉树 II,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
剑指 Offer 32 - II. 从上到下打印二叉树 II
从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如: 给定二叉树: [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
链接: https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/
解题
在这道题之前有一道题: https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/
在上一道题中是把每一层的数据进行打印,在本题是将每层的数据保存到一个list中。 所以只需要在之前的解题上扩展一下思维就好了。
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> lists = new ArrayList<>();
//如果等于null,就直接返回一个空的int[]数组
if(root==null)
return lists;
//利用队列先进先出的特性,保存每一个根节点
Queue<TreeNode> queue = new LinkedList<>();
//先把根入队
queue.offer(root);
//队列不为空的时候,一直执行
while (!queue.isEmpty()){
//存储每一层的数据
List<Integer> list = new ArrayList<>();
//把每一层的数据给拿到 queue.size()的大小就是每一层节点的多少
for(int i=queue.size();i>0;i--){
//第一步:取出根元素,存储到list中
list.add(queue.peek().val);
//第二步:弹出队列中的根元素
TreeNode pollRoot = queue.poll();
//第三步:分别把根的左子树和右子树入队
if(pollRoot.left!=null)
queue.offer(pollRoot.left);
if(pollRoot.right!=null)
queue.offer(pollRoot.right);
}
//保存每次的结果
lists.add(list);
}
// 将lists返回
return lists;
}
}
- async 和 await 之异步编程的学习
- 寻找数组中第二大或第二小的数值
- 怎样写解释器
- Oozie分布式工作流——EL表达式
- SAP彭俊松:工业4.0软件架构和实施路线的探讨
- d3.js在博客园中的展示例子
- nuget服务器搭建,以及如何发布一个Nuget包
- knockoutjs 上自己实现的flux
- 简单实现 C# 与 Javascript的兼容
- Oozie分布式工作流——从理论和实践分析使用节点间的参数传递
- 如何写好CSS系列之表单(form)
- 2017年Dataversity 最受欢迎文章 Top 20 榜单
- “自如”获40亿融资,组合域名用的妙
- D3、openlayers的一次尝试
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Codeforce-CodeCraft-20 (Div. 2)-A. Grade Allocation
- Cypress系列(69)- route() 命令详解
- Codeforce-Ozon Tech Challenge 2020-D. Kuroni and the Celebration(交互题+DFS)
- Codeforce 263D Cycle in Graph 搜索 图论 哈密尔顿环
- codeforce 266c Below the Diagonal 矩阵变换 (思维题)
- Codeforce-Ozon Tech Challenge 2020-C. Kuroni and Impossible Calculation(鸽笼原理)
- 探索ParNew和CMS垃圾回收器
- Codeforce-Ozon Tech Challenge 2020-B. Kuroni and Simple Strings(贪心)
- 第K短路+严格第K短路
- PostgreSQL异常重启postmaster.pid处理
- Codeforce-Ozon Tech Challenge 2020-A. Kuroni and the Gifts
- 洛谷P3360偷天换日(树形DP)
- Java开发编程规范: 2.常量定义
- Codeforces Round #509 (Div. 2) A. Heist 贪心
- CodeForces - 1176A Divide it! (模拟+分类处理)