class Solution { public List> levelOrder(TreeNode root) { List> ans=new ArrayList<>(); if(root==null) return ans; List level=new ArrayList<>(); Queue q=new LinkedList<>(); q.offer(root); q.offer(null); while(!q.isEmpty()){ TreeNode temp=q.poll(); if(temp==null){ ans.add(level); level.clear(); if(!q.isEmpty()){ q.offer(null); } } else { level.add(temp.val); if(temp.left!=null) q.offer(temp.left); if(temp.right!=null) q.offer(temp.right); } } return ans; } }