此题根前面一道如出一辙,而且更简单一些
把二叉树打印成多行
http://www.nowcoder.com/questionTerminal/445c44d982d04483b04a54f298796288
public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> res = new ArrayList<>(); ArrayList<Integer> item = new ArrayList<Integer>(); Queue<TreeNode> q1 = new LinkedList<TreeNode>(); Queue<TreeNode> q2 = new LinkedList<TreeNode>(); if(pRoot==null) return res; q1.add(pRoot); while(true){ if(q1.isEmpty() && q2.isEmpty()) break; if(!q1.isEmpty()){ while(!q1.isEmpty()){ TreeNode temp = q1.poll(); item.add(temp.val); if(temp.left!=null) q2.add(temp.left); if(temp.right!=null) q2.add(temp.right); } res.add(new ArrayList(item)); item.clear(); }else{ while(!q2.isEmpty()){ TreeNode temp = q2.poll(); item.add(temp.val); if(temp.left!=null) q1.add(temp.left); if(temp.right!=null) q1.add(temp.right); } res.add(new ArrayList(item)); item.clear(); } } return res; }