题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路:层次遍历。记录每一层的结点树和当前已经访问的这一层结点。count表示这一层共有多少结点,cur表示当前已经访问了这一层的多少结点
import java.util.*; public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> result=new ArrayList<>(); if(pRoot == null){ return result; } Queue<TreeNode> queue=new LinkedList<>(); queue.add(pRoot); int cur=0,count=1; ArrayList<Integer> list=new ArrayList<>(); while (!queue.isEmpty()){ cur ++; TreeNode node=queue.poll(); list.add(node.val); if(node.left != null){ queue.add(node.left); } if(node.right != null){ queue.add(node.right); } if(cur == count){ count = queue.size(); cur = 0; result.add(new ArrayList<>(list)); list.clear(); } } return result; } }