题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
使用双向链表,先把当前行按顺序打印,再取出当前行并将下一行存入链表
 1 public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {//树 双向链表 mytip
 2         ArrayList<ArrayList<Integer>> re = new ArrayList<>();
 3         LinkedList<TreeNode> queue = new LinkedList<>();
 4         if(null==pRoot){
 5             return re;
 6         }
 7         queue.add(null);
 8         queue.add(pRoot);
 9
10         boolean flag = true;
11         while(queue.size()>1){//最后一个为null
12             TreeNode node = queue.poll();//当前不为null时,取出并将孩子结点存入链表
13             if(null==node){//当前为null是将链表中数打印
14                 ArrayList<Integer> list = new ArrayList<>();
15                 Iterator<TreeNode> iter = null;
16                 if(flag){
17                     iter = queue.iterator();//正向
18                 }else{
19                     iter = queue.descendingIterator();//反向
20                 }
21                 while(iter.hasNext()){
22                     TreeNode n = iter.next();
23                     list.add(n.val);
24                 }
25                 if(queue.size()>0){
26                     queue.add(null);
27                 }
28                 re.add(list);
29                 flag = !flag;
30                 continue;//必须加
31             }
32             if(null!=node.left){
33                 queue.add(node.left);
34             }
35             if(null!=node.right){
36                 queue.add(node.right);
37             }
38         }
39         return re;
40     }

转载于:https://www.cnblogs.com/zhacai/p/10679898.html

剑指offer-按之字形顺序打印二叉树相关推荐

  1. C#刷剑指Offer | 从上到下打印二叉树

    [C#刷题]| 作者 / Edison Zhou 这是EdisonTalk的第288篇原创内容 我们来用之前学到的数据结构知识来刷<剑指Offer>的一些核心题目(精选了其中30+道题目) ...

  2. 二叉树高度的代码解析_剑指offer 从上到下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解析:这实际上就是二叉树的层序遍历.规律如下:每次打印节点,如果该节点有子节点,则将子节点放入队列末尾,然后取出队列头部最早进入队列的 ...

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

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解决方案: import java.util.ArrayList; import java.util.ArrayList; impor ...

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

    思路:采用队列思想,一边进一边出,先进先出,选择双向队列deque(其实queue已经够了,没必要用deque) /* struct TreeNode {     int val;     struc ...

  5. 剑指offer——面试题61:按之字形顺序打印二叉树

    剑指offer--面试题61:按之字形顺序打印二叉树 Solution1: 基于上一题的解法,缺点:效率低下! /* struct TreeNode {int val;struct TreeNode ...

  6. 剑指Offer——P32——之字形打印二叉树

    请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. package jianzhi_offer; impo ...

  7. (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数

    剑指offer--面试题12:打印1到最大的n位数 此题在牛客网上没有OnlineJudge,在此补充两种做法. 参考网址:https://blog.csdn.net/yanxiaolx/articl ...

  8. 《LeetCode力扣练习》剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Java

    <LeetCode力扣练习>剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Java 一.资源 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组 ...

  9. 《LeetCode力扣练习》剑指 Offer 06. 从尾到头打印链表 Java

    <LeetCode力扣练习>剑指 Offer 06. 从尾到头打印链表 Java 一.资源 题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回). 示例 1: 输入: ...

  10. LeetCode Algorithm 剑指 Offer 06. 从尾到头打印链表

    剑指 Offer 06. 从尾到头打印链表 Ideas 遍历链表,每次在vector的头部insert当前元素值. Code C++ class Solution {public:vector< ...

最新文章

  1. bmp文件头_「正点原子FPGA连载」第十九章SD卡读BMP图片LCD显示
  2. OpenCV | OpenCV:sift,SURF 特征提取
  3. 我总结的js性能优化的小知识
  4. tensorflow中张量、常量、变量、占位符
  5. top.location.href和localtion.href代码剖析
  6. web实现数据交互的几种常见方式
  7. kaggle比赛——房价预测
  8. 三维姿态:关于solvePnP与cvPOSIT
  9. 浅谈高并发系统性能调优
  10. kafka基础之核心概念
  11. World Wind Java开发之六——解析shape文件(转)
  12. 整理C# 二进制,十进制,十六进制 互转
  13. Android视频加密
  14. OOA、OOD、OOP 区别与思想
  15. 乘风破浪,遇见未来元宇宙(Metaverse)之元宇宙重要基本元素之一,虚拟数字人行业洞察报告及未来趋势
  16. python处理千万级数据_python实现千万级+点云数据三维坐标球面坐标互转
  17. 搭建一条区块链需要多少时间和资金
  18. mysql 启动 spawn错误_supervisor ERROR (spawn error):错误解决
  19. 用纯CSS3的animation制作雪花飘落、星星闪烁、按钮缩放、图片倾斜
  20. matlab 稳定系统,matlab分析系统的稳定性

热门文章

  1. 3pc在mysql的实现_面试官:了解分布式事务?讲讲你理解的2PC和3PC原理
  2. ORA-02082: 回送数据库链接必须具有连接限定词
  3. linux 检测远程端口是否打开---nmap命令
  4. java解析日志数据_Java实时监控日志文件并输出的方法详解
  5. 重庆邮电大学计算机学院院徽,Slide计算机学院-重庆邮电大学.PPT
  6. python常考题_Python语言基础考察点:python语言基础常见考题(一)
  7. led灯条维修_led硅胶线条灯不亮的8大原因,怎样识别led灯带的质量
  8. 模型部署到移动端_TensorFlow Lite 自然语言处理模型的最新功能,助力设备端 NLP 部署...
  9. cs架构用什么语言开发_C、C++、Go 语言、Linux服务器开发高级架构师进阶之路
  10. 内存颗粒和闪存颗粒的区别_浅谈闪存颗粒二三事