剑指offer-按之字形顺序打印二叉树
来源:互联网 发布:数据手册 编辑:程序博客网 时间:2024/06/05 22:41
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
分析
二叉树的层次遍历,为了之字形记录数据需要一个备用栈(注意:由于是之字形打印,所以需要栈而不是队列,另外需要一个方向标记来选择打印方向)
参考:层次打印二叉树
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); if (pRoot == null) { return result; } boolean leftToRight = true; // 设置遍历信号--默认从左到右 TreeNode s1 = null; TreeNode s2 = null; Queue<TreeNode> queue1 = new LinkedList<>(); Stack<TreeNode> stack2 = new Stack<>(); // 备用栈(需要画图理解) queue1.add(pRoot); while (!queue1.isEmpty()) { ArrayList<Integer> list = new ArrayList<Integer>(); // 将一层的所有值放入list中(queue1的作用),清空queue1并将数据转移到queue2 while (!queue1.isEmpty()) { s1 = queue1.poll(); stack2.add(s1); list.add(s1.val); } result.add(list); // stack2保存相当于复制没有清空的queue1,然后将下一层所有节点转给queue1 // leftToRight=true正向遍历 leftToRight=false反向遍历 if (leftToRight) { while (!stack2.isEmpty()) { s2 = stack2.pop(); if (s2.right != null) { queue1.add(s2.right); } if (s2.left != null) { queue1.add(s2.left); } } leftToRight = false; } else { while (!stack2.isEmpty()) { s2 = stack2.pop(); if (s2.left != null) { queue1.add(s2.left); } if (s2.right != null) { queue1.add(s2.right); } } leftToRight = true; } } return result; }
0 0
- 剑指offer--按之字形顺序打印二叉树
- 《剑指offer》按之字形顺序打印二叉树
- 剑指offer—按之字形顺序打印二叉树
- 《剑指offer》——按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- [剑指offer]按之字形顺序打印二叉树
- 剑指offer(五十三)之按之字形顺序打印二叉树
- 剑指Offer--061-按之字形顺序打印二叉树
- 《剑指offer》:[61]按之字形顺序打印二叉树
- 剑指offer(56)-按之字形顺序打印二叉树
- 剑指offer——按之字形顺序打印二叉树
- 剑指offer|按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树
- 剑指offer-----按之字形顺序打印二叉树(java版)
- 【剑指Offer】按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树-php
- 剑指offer-59.按之字形顺序打印二叉树
- 简单的霓虹灯效果
- HDU 2061 Treasure the new start, freshmen!(GPA的计算)
- 深入理解Java HelloWorld
- Andorid小项目之--Animation四种动画的图片效果
- 数据结构示例之单链表删除元素
- 剑指offer-按之字形顺序打印二叉树
- Java开发工具_Eclipse导入项目要注意的小问题
- python经常忘的
- Anroid中View框架总结
- java使用资源文件实现程序的国际化
- 悦读:重新定义公司-谷歌是如何运营的
- 剑指Offer面试题6:重建二叉树 Java实现
- J2EE之Spring中Bean的基础配置
- hdu 1072 Nightmare