题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
题目链接:
分析:
用一个队列记录每一行记录。
在打印一行之前,将当前行有多少个节点记录下来,以区分当前和下一行的节点。
import java.util.ArrayList; import java.util.LinkedList; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> list = new ArrayList<>(); if(pRoot == null){ return list; } //记录每一层的节点 LinkedList<TreeNode> queue = new LinkedList<>(); queue.add(pRoot); while(queue.size()!=0){ //记下当前层所有节点数 int size = queue.size(); ArrayList<Integer> arr = new ArrayList<>(); for(int i=0;i<size;i++){ TreeNode cur = queue.pop(); arr.add(cur.val); if(cur.left != null){ queue.add(cur.left); } if(cur.right != null){ queue.add(cur.right); } } list.add(arr); } return list; } }