题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:需要保存下一层需要打印的节点个数。
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> arrayList = new ArrayList<>(); ArrayList<Integer> list = new ArrayList<>();; Queue<TreeNode> queue = new LinkedList<>(); if(pRoot!=null) { queue.add(pRoot); } int nextLevel = 0; int count = 1; while(!queue.isEmpty()){ count--; TreeNode node = queue.poll(); list.add(node.val); if(node.left!=null){ queue.add(node.left); nextLevel++; } if(node.right!=null){ queue.add(node.right); nextLevel++; } if(count == 0){ arrayList.add(list); count = nextLevel; nextLevel = 0; list = new ArrayList<Integer>(); } } return arrayList; }