class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> out = new LinkedList<>();
if(root == null) return out;
levelorder (root, out, 0);
return out;
}
void levelorder(TreeNode node, List<List<Integer>> out, int level) {
if (node == null) { return; }
if (out.size() == level) {
// Create a new level list if required
out.add (new LinkedList<Integer>());
}
out.get(level).add (node.val);
levelorder (node.left, out, level + 1);
levelorder (node.right, out, level + 1);
}
}