按之字形顺序打印二叉树
2017-08-28 17:20
204 查看
题目
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路
使用两个栈来储存相邻两层的节点,保证顺序储存后的栈在下一层依次弹出节点,同时使用另一个栈保存再下一层的节点
public class Solution { public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> allList = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> list = new ArrayList<>(); TreeNode node = new TreeNode(0); boolean flag = true; if(pRoot==null) return allList; Stack<TreeNode> s1 = new Stack<TreeNode>(); s1.push(pRoot); Stack<TreeNode> s2 = new Stack<TreeNode>(); while(!s1.empty()||!s2.empty()){ if(flag){ while(!s1.empty()){ node = s1.pop(); if(node!=null){ list.add(node.val); s2.push(node.left); s2.push(node.right); } } }else{ while(!s2.empty()){ node = s2.pop(); if(node!=null){ list.add(node.val); s1.push(node.right); s1.push(node.left); } } } if(list.size()!=0){ allList.add(new ArrayList<Integer>(list)); list.clear(); flag = !flag; } } return allList; } }
相关文章推荐
- 剑指offer--面试题61:按之字形顺序打印二叉树
- 剑指offer(五十三)之按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer系列之五十四:按之字形顺序打印二叉树
- 【剑指offer-解题系列(60)】按之字形顺序打印二叉树
- 【剑指offer】按之字形顺序打印二叉树
- 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer--按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- 59按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树17:按之字形顺序打印二叉树
- 剑指offer 61题 【树】按之字形顺序打印二叉树
- 《剑指offer》按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer——按之字形顺序打印二叉树
- 51.之字形顺序打印二叉树
- JAVA 按之字形顺序打印二叉树