[102][中等] 二叉树的层序遍历
题目描述
102. 二叉树的层序遍历 107. 二叉树的层次遍历 II 429. N叉树的层序遍历 637. 二叉树的层平均值 103. 二叉树的锯齿形层次遍历 993. 二叉树的堂兄弟节点 剑指 Offer 32 - I. 从上到下打印二叉树 剑指 Offer 32 - II. 从上到下打印二叉树 II 剑指 Offer 32 - III. 从上到下打印二叉树 III
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:
二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[
[3],
[9,20],
[15,7]
]
解题思路
使用队列. 按层进行循环, 借助的是记录当前层中节点的数量size
, 对队列进行size
次数的pop
. 此时队列中的结点都是下一层的结点, 队列的长度就是下一层结点的数量. 向下循环重复之前的操作.
# 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 root is None:
return []
res, queue = [], collections.deque()
queue.append(root)
while queue:
nums = len(queue)
layer = []
for _ in range(nums):
node = queue.popleft()
layer.append(node.val)
if node.left is not None:
queue.append(node.left)
if node.right is not None:
queue.append(node.right)
res.append(layer)
return res
相关题目
107. 二叉树的层次遍历 II 429. N叉树的层序遍历 637. 二叉树的层平均值 103. 二叉树的锯齿形层次遍历 993. 二叉树的堂兄弟节点
最后更新于
这有帮助吗?