思路:BFS
普通BFS得到一个层序遍历的一维列表,稍微改一下,增加一个循环计数遍历每一层即可
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root:
return []
res=[]
queue=[]
queue.append(root)
while queue:
l=len(queue)#当前层的节点数
tmp=[]#储存当前层的节点
for i in range(l):
i+=1
node=queue.pop(0)#默认是-1,即最后一个进队的,这里要先进先出
tmp.append(node.val)
if node.left :
queue.append(node.left)
if node.right:
queue.append(node.right);
res.append(tmp)
return res