按之字形顺序打印二叉树(Java实现)
来源:互联网 发布:缴费一站通软件 编辑:程序博客网 时间:2024/06/11 18:50
本题为剑指offer面试题61
牛客网测试地址:https://www.nowcoder.com/questionTerminal/91b69814117f4e8097390d107d2efbe0
[编程题]按之字形顺序打印二叉树
- 热度指数:33419 时间限制:1秒 空间限制:32768K
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
Java code:
package go.jacob.day612;import java.util.ArrayList;import java.util.Stack;public class Demo1 {public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {//result用来存储结果ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();if (pRoot == null)return result;//line存取每一行数字ArrayList<Integer> line = new ArrayList<Integer>();//建立两个堆栈Stack<TreeNode> stack1 = new Stack<TreeNode>();Stack<TreeNode> stack2 = new Stack<TreeNode>();boolean flag = true;TreeNode node;stack1.push(pRoot);while (!stack1.isEmpty() || !stack2.isEmpty()) {//如果奇数行,正序打印if (flag) {while (!stack1.isEmpty()) {node = stack1.pop();line.add(node.val);//先存left子节点,再存right子节点if (node.left != null) {stack2.push(node.left);}if (node.right != null) {stack2.push(node.right);}//当堆栈为空,说明该行节点遍历完毕if (stack1.isEmpty()) {result.add(line);line = new ArrayList<Integer>();}}//偶数行,逆序打印} else {while (!stack2.isEmpty()) {node = stack2.pop();line.add(node.val);//先存right子节点,再存left子节点if (node.right != null) {stack1.push(node.right);}if (node.left != null) {stack1.push(node.left);}//当堆栈为空,说明该行节点遍历完毕if (stack2.isEmpty()) {result.add(line);line = new ArrayList<Integer>();}}}flag = !flag;}return result;}class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}}
阅读全文
0 0
- 按之字形顺序打印二叉树(Java实现)
- 按之字形顺序打印二叉树java实现
- 按之字形顺序打印二叉树 java
- 按之字形顺序打印二叉树(java版)
- 剑指offer面试题61 按之字形顺序打印二叉树(java实现)
- 剑指offer-----按之字形顺序打印二叉树(java版)
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 牛客网 | 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 55.按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 基于用户画像对于论文的考虑
- RecyclerView爱恨情仇之ItemTouchHelper
- Android 开源控件
- vs2008下的MFC程序,怎么检测内存泄露
- 详解logback.xml配置
- 按之字形顺序打印二叉树(Java实现)
- C/C++文件输入输出
- bzoj 3853 GCD Array
- cocos2dx 九宫格 shader失效的问题
- 公钥,私钥和数字签名这样最好理解
- [iOS]app解屏(亮屏)之后刷新数据
- iOS开发--程序应用如何跳转到App Store指定APP
- 面试题:Java关键字列表和保留字列表
- ScheduledExecutorService的使用