力扣热题100之二叉树的层序遍历
题目
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
代码
借助队列进行层序遍历,广度优先搜索。
# 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
# 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=curres.append(val)return res