题目
给你二叉树的根节点 root
,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
提示:
- 树中节点数目在范围
[0, 2000]
内 -1000 <= Node.val <= 1000
思路
层序遍历一个二叉树。就是从左到右一层一层的去遍历二叉树。
这里需要借助队列来辅助进行存储节点,队列先进先出,符合一层一层遍历的逻辑。
可以创建一个队列,用来存储二叉树每行的节点,依次遍历每个节点,将节点的数值存储到该层对应的list中,最后将所有的层list添加到result即可
代码
python
# 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
import collections
class Solution:
def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
if not root :
return []
myqueue = collections.deque()
myqueue.append(root)
result = []
while myqueue:
level = []
for _ in range(len(myqueue)):
temp = myqueue.popleft()
level.append(temp.val)
if temp.left:
myqueue.append(temp.left)
if temp.right:
myqueue.append(temp.right)
result.append(level)
return result