自己写的方法
按之字形顺序打印二叉树
http://www.nowcoder.com/questionTerminal/91b69814117f4e8097390d107d2efbe0
如题,用个flag标志切换方向
public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> result = new ArrayList<>(); if (pRoot == null) { return result; } boolean flag = true; Queue<TreeNode> queue = new LinkedList<>(); queue.offer(pRoot); int count = 0; while (!queue.isEmpty()) { count = queue.size(); ArrayList<Integer> list = new ArrayList<>(); ArrayList<TreeNode> tmpList = new ArrayList<>(); while (count > 0) { TreeNode node = queue.poll(); list.add(node.val); tmpList.add(node); count--; if(count<=0){ if(flag){ flag = false; if(tmpList.size()>0){ for(int i=tmpList.size()-1;i>=0;i--){ TreeNode node1 = tmpList.get(i); if(node1.right!=null){ queue.offer(node1.right); } if(node1.left!=null){ queue.offer(node1.left); } } } }else{ if(tmpList.size()>0){ for(int i=tmpList.size()-1;i>=0;i--){ TreeNode node2 = tmpList.get(i); if(node2.left!=null){ queue.offer(node2.left); } if(node2.right!=null){ queue.offer(node2.right); } } } flag = true; } } } result.add(list); } return result; }