n-times
T/S: O(n)/O(w), where n = number of nodes in the tree and w = max nodes at any level
public List<List<Integer>> levelOrder(TreeNode root) {
if (root == null)
return List.of();
var lot = new ArrayList<List<Integer>>();
var q = new ArrayDeque<>(List.of(root));
while (!q.isEmpty()) {
var level = new ArrayList<Integer>();
for (var i = q.size(); i > 0; i--) {
var node = q.poll();
level.add(node.val);
if (node.left != null)
q.add(node.left);
if (node.right != null)
q.add(node.right);
}
lot.add(level);
}
return lot;
}Legend: P = Premium
Comments and contributions for improvement are appreciated. Thanks!