void printLevelByLevel(TreeNode root){
Queue<TreeNode> q = new LinkedList<TreeNode>();
q.add(root);
int toVisit = 1;
while(!q.isEmpty()){
int newToVisit = 0;
StringBuilder level = new StringBuilder();
for(int i = 0; i < toVisit; i++){
TreeNode current = q.poll();
level.append(Integer.toString(current.val));
if(current.left != null){
q.add(current.left);
newToVisit++;
}
if(current.right != null){
q.add(current.right);
newToVisit++;
}
}
System.out.println(level.toString());
toVisit = newToVisit;
}
}