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

文章目录

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

package offer;import java.util.ArrayList;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;//定义树节点
class TreeNode{int val;TreeNode left;TreeNode right;TreeNode(){};TreeNode(int x){val = x;}
}public class Solution32 {public static void main(String[] args) {TreeNode node1 = new TreeNode(3);TreeNode node2 = new TreeNode(9);TreeNode node3 = new TreeNode(20);TreeNode node4 = new TreeNode(15);TreeNode node5 = new TreeNode(7);node1.left = node2;node1.right = node3;node3.left = node4;node3.right = node5;Solution32 solution = new Solution32();System.out.println(solution.method(node1));}private List<List<Integer>>  method(TreeNode root){List<List<Integer>> res = new ArrayList<>();Deque<TreeNode> deque = new LinkedList<>();if (root != null) deque.addFirst(root);List<Integer> temp = new ArrayList<>();TreeNode node = new TreeNode();while(!deque.isEmpty()){temp = new ArrayList<>();for(int i = deque.size(); i > 0; i--){//从左向右打印node = deque.removeFirst();temp.add(node.val);if(node.left != null) deque.addLast(node.left);if(node.right != null) deque.addLast(node.right);}res.add(temp);//如果没有下一层了,则提前跳出if(deque.isEmpty()) break;temp = new ArrayList<>();for(int i = deque.size(); i > 0; i--){//从右向左打印node = deque.removeLast();temp.add(node.val);if(node.right != null) deque.addFirst(node.right);if(node.left != null) deque.addFirst(node.left);}res.add(temp);}return res;}
}//时间复杂度为 O(n)
//空间复杂度为 O(n)

【LeetCode】剑指 Offer 32 - III. 从上到下打印二叉树 III相关推荐

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

    [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 文章目录 [LeetCode]剑指 Offer 32 - II. 从上到下打印二叉树 II 一.层序遍历 BFS 一. ...

  2. 【简洁+注释】剑指 Offer 32 - II. 从上到下打印二叉树 II

    立志用最少的代码做最高效的表达 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回其层次遍历结果 ...

  3. 【简洁写法】剑指 Offer 32 - I. 从上到下打印二叉树

    立志用最少的代码做最高效的表达 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,1 ...

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

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

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

    2020-06-22 1.题目描述 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 2.题解 广度优先搜索,即层次遍历即可 3.代码 /*** Definition fo ...

  6. JZ32变形~剑指 Offer 32 - II. 从上到下打印二叉树 II

    放假不学习/上班,学习不放假.放假当然是不能学习或工作啦

  7. 剑指 Offer 32 - I. 从上到下打印二叉树(Java迭代法实现)

    给定二叉树: [3,9,20,null,null,15,7] 找下规律, 发现队列可以实现层次遍历, 比如根节点3先入队,再将队列的第一个节点出队,并将出队的左右子节点(不为空)入队,直到队列为空. ...

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

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

  9. 剑指offer之分行从上到下打印二叉树

    1 题目 分行从上到下打印二叉树 23 5 1 4 2 3 我们打印如下 23 51 4 2 3 2 分析 之前这篇博客写了通过队列按层打印剑指offer之按层打印树节点 现在无非就是还要按照条件打印 ...

  10. Python剑指offer:分行从上到下打印二叉树

    从上到下按层打印二叉树,同一层的节点按照从左到右 的顺序打印,每一层打印到第一行,例如本题中上一个问题的二叉树 输出形式会是: 8 6 10 5 7 9 11 这道题和前面一道题十分类似,也可以用一个 ...

最新文章

  1. iOS 本地时间与GMT时间相互转换
  2. Python 用smtplib库发邮件报错:[WinError 10061] 由于目标计算机积极拒绝,无法连接。解决办法
  3. PHP输出毫秒时间戳
  4. 一些关于毫米波技术的文献
  5. 别做码农了,去做一名工程师
  6. 一个x86平台的spi flash驱动移植笔记
  7. [Troubleshooting]-Outlook预定Lync预定会议显示乱码与残留号码
  8. AngularJS-webapp($q)
  9. bzoj 2427: [HAOI2010]软件安装(Trajan+树形DP)
  10. 【字符串替换】程序员面试金典——1.5基本字符串压缩
  11. qmessagebox 设置显示屏幕中间_windows7屏幕分辨率设置
  12. python调用接口获取文件_Python中做接口自动化如何读取配置ini文件
  13. IDEA中自动导包快捷键
  14. 【P01】双运放非反相放大器和失调处置
  15. esxi安装系统ndows,ESXI 安装 Windows Server 2012过程
  16. 虚拟网络之Kubernetes Cilium CNI 快速部署实操
  17. java 走马灯程序_微信小程序实现简单跑马灯效果
  18. 条码支付互联互通介绍
  19. NLU(Natural Language Understanding)太难了
  20. 【Windows】win10任务栏图标空白的解决方案

热门文章

  1. 用Visual Studio 2008编写Win32汇编程序
  2. nightwatch系列教程03——开发者指南:运行你的测试脚本
  3. package.json和bower的参数解释
  4. lintcode-137-克隆图
  5. 2016年百度面试题
  6. VXLAN 概念(Part II)- 每天5分钟玩转 OpenStack(109)
  7. 一起啃PRML - 1.2.2 Expectations and covariances 期望和协方差
  8. CFileDialog常见用法
  9. Spring Cloud Config统一管理微服务配置
  10. tomcat有集成mysql嘛_jira+tomcat+mysql的集成