// Definiton of TreeNode in Java
/*
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
public TreeNode(int val) {
this.val = val;
left = null;
right = null;
}
}
*/
import java.util.ArrayDeque;
import java.util.Deque;
public class BFS {
public void bfs(TreeNode root) {
Deque<TreeNode> queue = new ArrayDeque<TreeNode>();
if (root != null) {
queue.add(root);
}
int level = 0;
while(!queue.isEmpty()) {
System.out.print("level " + level + ": ");
int levelLength = queue.size();
for (int i = 0; i < levelLength; i++) {
TreeNode curr = queue.removeFirst();
System.out.print(curr.val + " ");
if(curr.left != null) {
queue.add(curr.left);
}
if(curr.right != null) {
queue.add(curr.right);
}
}
level++;
System.out.println();
}
}
}