import queue
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
q = queue.Queue()
q.put(root) # 先把根节点入队
ans = []
while not q.empty():
layer_node_num = q.qsize() # 当前队列中的节点数量为这一层的节点数
layer_node = [] # 用于保存这一层的节点
while layer_node_num > 0:
curr_node = q.get() # 队首节点出队
layer_node.append(curr_node.val)
layer_node_num -= 1
if curr_node.left:
q.put(curr_node.left)
if curr_node.right:
q.put(curr_node.right)
ans.append(layer_node)
return ans