博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指 Offer 32 - III. 从上到下打印二叉树 III
阅读量:4033 次
发布时间:2019-05-24

本文共 1349 字,大约阅读时间需要 4 分钟。

题目描述

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

例如:

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

3

/

9 20
/
15 7
返回其层次遍历结果:

[

[3],
[20,9],
[15,7]
]

提示:

节点总数 <= 1000

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

JAVA

双栈

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {
public List
> levelOrder(TreeNode root) {
List
> res=new ArrayList<>(); if (root==null) return res; Stack
stack1=new Stack<>(); //奇数栈 Stack
stack2=new Stack<>(); //偶数栈 int count=1; stack1.push(root); while(!stack1.isEmpty() || !stack2.isEmpty()){ if(count %2==1){ List
temp1=new ArrayList<>(); while(!stack1.isEmpty()){ TreeNode top1=stack1.pop(); temp1.add(top1.val); if(top1.left!=null) stack2.push(top1.left); if(top1.right!=null) stack2.push(top1.right); } res.add(temp1); }else{ List
temp2=new ArrayList<>(); while (!stack2.isEmpty()){ TreeNode top2=stack2.pop(); temp2.add(top2.val); if(top2.right!=null) stack1.push(top2.right); if(top2.left!=null ) stack1.push(top2.left); } res.add(temp2); } count++; } return res; }}
你可能感兴趣的文章
python使用win32*模块模拟人工操作——城通网盘下载器(一)
查看>>
python append 与浅拷贝
查看>>
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>
python自动化工具之pywinauto(零)
查看>>
python一句话之利用文件对话框获取文件路径
查看>>
PaperDownloader——文献命名6起来
查看>>
PaperDownloader 1.5.1——更加人性化的文献下载命名解决方案
查看>>
如何将PaperDownloader下载的文献存放到任意位置
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
JVM最简生存指南
查看>>
漂亮的代码,糟糕的行为——解决Java运行时的内存问题
查看>>
Java的对象驻留
查看>>
logback高级特性使用(二) 自定义Pattern模板
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
可扩展、高可用服务网络设计方案
查看>>
如何构建高扩展性网站
查看>>
微服务架构的设计模式
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
c++字符数组和字符指针区别以及str***函数
查看>>