题目:

思路:
层次遍历要求从左到右访问节点,符合先进先出的顺序,所以要用到队列,在python中一般用deque双向队列
- 判断root是否为空,若为空,返回空列表
- 把root加入到队列中
- 当队列不为空
- for _ in range(len(queue)):
- 过渡列表temp=[]
- 取出队列的头部节点,并加入到temp中
- 判断该节点的左右子节点是否为空,不为空加入到队列中
- 一层的元素全部存在temp中,把temp加入到最终答案ans中
- for _ in range(len(queue)):
- 输出ans
代码:
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root:
return []
res, queue = [], deque()
queue.append(root)
while queue:
temp = []
for _ in range(len(queue)):
node = queue.popleft()
temp.append(node.val)
if node.left:queue.append(node.left)
if node.right:queue.append(node.right)
res.append(temp)
return res