Binary Tree Level Order Traversal
Solution: we can utilize two queues to control we traverse level by level.
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList();
if (root == null) return result;
Queue<TreeNode> current = new LinkedList<TreeNode>();
Queue<TreeNode> next = new LinkedList<TreeNode>();
current.offer(root);
List<Integer> currentLevel = new ArrayList();
while (!current.isEmpty()) {
TreeNode node = current.poll();
currentLevel.add(node.val);
if (node.left != null) {
next.offer(node.left);
}
if (node.right != null) {
next.offer(node.right);
}
if (current.isEmpty()) {
result.add(new ArrayList(currentLevel));
currentLevel = new ArrayList();
current = next;
next = new LinkedList<TreeNode>();
}
}
return result;
}