[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. 二叉树的堂兄弟节点

最后更新于