题目
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
代码
借助队列进行层序遍历,广度优先搜索。
bash
# 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 []
queue=deque([root])
res=[]
while queue:
n=len(queue)
cur=[]
for _ in range(n):
node=queue.popleft()
cur.append(node.val)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
res.append(cur)
return res
或者不用队列,使用三个数组,一个用来存储每一层中的节点cur,一个用来遍历queue,一个用来存储每一层节点的值val
bash
# 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 []
queue=[root]
res=[]
while queue:
cur=[]
val=[]
for node in queue:
val.append(node.val)
if node.left:
cur.append(node.left)
if node.right:
cur.append(node.right)
queue=cur
res.append(val)
return res