通过 level 记录每一层的节点个数
function levelOrder(root: TreeNode | null): number[][] {
if (!root) return []
const result: number[][] = []
const queue: TreeNode[] = []
queue.push(root)
while (queue.length > 0) {
// 用于记录当前层级的节点值
const level: number[] = []
// 注意:存当前层长度,因为后续遍历 queue 的过程 queue 的长度会变化
const length = queue.length
for (let i = 0; i < length; i++) {
const top = queue.shift()
level.push(top.val)
if (top.left) {
queue.push(top.left)
}
if (top.right) {
queue.push(top.right)
}
}
result.push(level)
}
return result
}