Given the root of a binary tree, return its node values grouped by level, from top to bottom. Within each level read the values left to right.
Return an array of arrays: the first inner array is the root's level, and so on. An empty tree returns [].
The tree is given in level-order (TreeNode with { val, left, right }, null for a missing child).
[3,9,20,null,null,15,7][1][][1,2,3,4,5,6,7][1,null,2,null,3][0,-1,1]