描述

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

示例

例如:
给定二叉树: [3,9,20,null,null,15,7],

返回:[3,9,20,15,7]

思路

此题考察的是二叉树的层序遍历,本质便是对一颗二叉树的广度优先搜索
不论是针对二叉树而是有向图,广度优先搜索一般都是借助队列结构实现的,利用优先进入队列的元素会优先离开队列的特点,
只需从树根开始,保证每个节点入队时,其左儿子和右儿子也会依序入队,则出队时的顺序即时二叉树的层序遍历。

代码

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

32. 从上到下打印二叉树 Ⅰ相关推荐

  1. 剑指 Offer 32 . 从上到下打印二叉树

    main函数测试代码: 按标准输入输出,比如输入: 3,9,20,null,null,15,7 public static void main(String[] args) {//输入3,9,20,n ...

  2. 剑指offer——32.从上到下打印二叉树

    题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 知识点: 像这种不是按照指针顺序打印的都需要引入辅助空间,由于分析可知,先进先出,因此我们引入了两端都可进出的队列deque,常用操作, ...

  3. 剑指offer 32. 从上到下打印二叉树

    声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.不分行从上到下打印二叉树 1.1. 问题描述 从上到下打印出二叉树的每一个结点,同一层的结点按照从左到右的顺序打印. 如二叉 ...

  4. Leetcode题库 32.从上到下打印二叉树(层次遍历 C实现)

    文章目录 解析 思路 改进 代码 解析 Queue为储存节点队列 Q_pos指向Queue尾部 Q_pri指向Queue头部 ret数组储存节点val值 *returnSize指向数组尾部 思路 先将 ...

  5. LeetCode-剑指 Offer 32 - I. 从上到下打印二叉树

    剑指 Offer 32 - I. 从上到下打印二叉树 思路一:BFS广度优先遍历 1: 定义一个res返回值 2:定义一个队列,先把头节点压入队列 3:while循环判断队列是否为空不为空进入循环 4 ...

  6. leetcode 打印_剑指 Offer 32 - III 从上到下打印二叉树 III - leetcode 剑指offer

    题目难度: 中等 原题链接 今天继续更新剑指 offer 系列, 这道题相比昨天那道题多了个每层打印方向不同的需求, 聪明的你想到应该如何实现了吗? 老样子晚上 6 点 45 分准时更新公众号 每日精 ...

  7. 32 - II. 从上到下打印二叉树 II

    链接 https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/ 难度: #简单 题目 从上到下按层打 ...

  8. 32 - I. 从上到下打印二叉树

    链接 https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/ 难度: #中等 题目 从上到下打印出二叉树 ...

  9. 【LeetCode】剑指 Offer 32 - III. 从上到下打印二叉树 III

    [LeetCode]剑指 Offer 32 - III. 从上到下打印二叉树 III 文章目录 [LeetCode]剑指 Offer 32 - III. 从上到下打印二叉树 III package o ...

最新文章

  1. python使用matplotlib可视化线图(line plot)、并自定义线条的粗细(线条的宽度、 line width in Matplotlib)
  2. ICLR 2020| 最新NAS benchmark:0.1秒完成NAS算法搜索
  3. 全方位绕过软WAF攻略
  4. 实现一个 WPF 版本的 ConnectedAnimation
  5. 同步轨道进入过程_工业轨道运输车_液压升降型轨道平车的应用
  6. oracle jvm规范官网下载及相关书籍推荐
  7. go语言的range使用
  8. vue --- 使用中央事件总线(bus)实现跨组件通信
  9. IOS学习笔记之十一(包装类、description、isequal)
  10. leetcode - Linked List Cycle
  11. 2004年9月全国计算机等级考试二级C语言笔试试题及答案
  12. 控件Repeater的嵌套使用
  13. 重置单例对象Singleton Swift
  14. StanfordDB class自学笔记 (5) JSON Data
  15. VMware vSphere下载
  16. Python---PDF旋转角度
  17. 第十四周学习周报20181210-20181216
  18. PT100温度传感器的工作原理
  19. 论文笔记:Probabilistic Matrix Factorization
  20. 关于github双因素验证问题解决方案

热门文章

  1. 让Windows 7电脑运行更快
  2. Oracle 删除添加表字段
  3. 对称密码的密钥与公钥密码的密钥
  4. instagram发布工具_如何将全景图发布到Instagram
  5. 大数据 用户画像基础
  6. .Net环境下有关打印页面设置、打印机设置、打印预览对话框的实现(开源)---转
  7. CAD文件怎么打开?什么软件可以快速打开CAD文件?
  8. python建筑工程中的应用_计算机语言在rhino、Revit等建筑软件中的应用初探,个人,对于,建筑学,领域,rhinorevit,探索...
  9. 使用IDEA创建Maven项目时,GroupID 和ArtifactID如何填写
  10. 关于龙芯教育派如何使用无线网卡连接WiFi