【问题描述】[中等]

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],3/ \9  20/  \15   7
返回:[3,9,20,15,7]

【解答思路】

BFS


时间复杂度:O(N) 空间复杂度:O(N)

class Solution {public int[] levelOrder(TreeNode root) {if(root == null) return new int[0];// Queue<TreeNode> queue=  new LinkedList<>();//queue.add(root);Queue<TreeNode> queue = new LinkedList<>(){{ add(root); }};ArrayList<Integer> ans = new ArrayList<>();while(!queue.isEmpty()) {TreeNode node = queue.poll();ans.add(node.val);if(node.left != null) queue.add(node.left);if(node.right != null) queue.add(node.right);}int[] res = new int[ans.size()];for(int i = 0; i < ans.size(); i++)res[i] = ans.get(i);return res;}
}

【总结】

1.细节

1.1 Queue
新建

  // Queue<TreeNode> queue=  new LinkedList<>();//queue.add(root);Queue<TreeNode> queue = new LinkedList<>(){{ add(root); }};

入队出队 add(x) poll()

1.2 ArrayList
新建
ArrayList ans = new ArrayList<>();
长度 size()
获取元素 get(i)

2. Queue


Queue是在两端出入的List,所以也可以用数组或链表来实现。

  • add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
  • remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
  • element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
  • offer 添加一个元素并返回true 如果队列已满,则返回false
  • poll 移除并返问队列头部的元素 如果队列为空,则返回null
  • peek 返回队列头部的元素 如果队列为空,则返回null
  • put 添加一个元素 如果队列满,则阻塞
  • take 移除并返回队列头部的元素 如果队列为空,则阻塞
注意
  • remove、element、offer 、poll、peek 其实是属于Queue接口。

  • add remove element操作在队满或者队空的时候会报异常。

  • offer poll peek 在队满或者队空的时候不会报异常。

  • put take操作属于阻塞操作。队满队空均会阻塞。

3.LinkedList
  • 以双向链表实现的LinkedList既是List,也是Queue。
  • 它是唯一一个允许放入null的Queue。
4.BFS 层次遍历 队列实现

转载链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/solution/mian-shi-ti-32-i-cong-shang-dao-xia-da-yin-er-ch-4/

[剑指offer][JAVA]面试题第[32-1]题[从上到下打印二叉树][BFS]相关推荐

  1. [剑指offer][JAVA]面试题第[32-3]题[从上到下打印二叉树 ][BFS]

    [问题描述][中等] 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3 ...

  2. [剑指offer][JAVA]面试题第[32-2]题[从上到下打印二叉树][BFS]

    [问题描述][简单] 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行.例如: 给定二叉树: [3,9,20,null,null,15,7],3/ \9 20/ \15 7 ...

  3. 【剑指offer】面试题32 - I:从上到下打印二叉树(Java)

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3    / \   9  20     /  \     ...

  4. 【剑指offer】面试题32 - III:从上到下打印二叉树 III(Java)

    请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3,9,20,null, ...

  5. 【剑指offer】面试题32 - II:从上到下打印二叉树 II(Java)

    从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3    / \   9  20     /  \ ...

  6. [剑指offer][JAVA]面试题第[31]题[栈的压入、弹出序列][栈]

    [问题描述][中等] 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4 ...

  7. [剑指offer][JAVA]面试题第[16]题[数值的整数次方][位运算][二分法]

    [问题描述][中等] 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题.示例 1:输入: ...

  8. [剑指offer][JAVA]面试题[51][数组中的逆序对][归并排序]

    [问题描述]面试题51.数组中的逆序对 (困难) 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数. 示例 1:输入: [7, ...

  9. 【博客搬家旧文】剑指offer [ java ] 面试题10 斐波那契数列

    契波那契数列最常见的解法,递归如下: public class Solution {public int Fibonacci(int n) {if(n == 0)return 0;else if(n ...

最新文章

  1. 【阿里聚安全·安全周刊】Intel芯片级安全漏洞事件|macOS存在漏洞
  2. 自适应采样非局部神经网络的点云鲁棒操作
  3. [BUUCTF-pwn]——wustctf2020_getshell_2
  4. shell脚本每日一练(一)
  5. 【2018.4.7】模拟赛之三-ssl2384 字符串【字符串】
  6. Angular15 利用ng2-file-upload实现文件上传
  7. 内核使用硬件ip的dma,dma_alloc_coherent 与 dma_alloc_writecombine (转)
  8. 上海找python工作容易吗_Python 在上海什么程度才能找到工作?
  9. 为什么要把id存到redis的key中_干货|mysql:exists还是in?哪个性能好?为什么?
  10. 使用Highcharts实现柱状图展示
  11. js如何判断访问来源是来自搜索引擎(蜘蛛人)还是直接访问
  12. 第3章 排列清单控制标记
  13. [Vani有约会]雨天的尾巴(树上差分+线段树合并)
  14. c++_String一些使用记录
  15. 【Robot 学习1】 机器人平台搭建
  16. 继承ActionSupport例子展示
  17. win10 修改git账号密码
  18. HTML_炫酷的按钮样式
  19. UE4 Pak包热更新
  20. 新浪企业邮箱服务器怎么设置,新浪企业邮箱如何在Iphone设置邮箱账号

热门文章

  1. 【转】Xcode 7 真机调试详细步骤
  2. CentOS 更改MySQL数据库目录位置
  3. 条款9:避免隐藏标准形式的new
  4. 在虚拟机中安装和配配置 MOSS2007 全过程
  5. 1.怎样定制VC#DataGrid列标题?
  6. Spring Cloud 采用Consul做配置中心
  7. mysql约束教程,MySQL 约束
  8. mysql myisam/innodb高并发优化经验_MySQL MyISAM / PHP 高并发优化经验
  9. 中国微型计算机分省市产量数据统计,2017年6月中国微型计算机设备产量统计数据分析...
  10. LeetCode 三数之和 — 优化解法