Skip to content

102. Binary Tree Level Order Traversal

题目

Given the root of a binary tree, return the level order traversal of its nodes' values. (i.e., from left to right, level by level).

 

Example 1:

Input: root = [3,9,20,null,null,15,7]
Output: [[3],[9,20],[15,7]]

Example 2:

Input: root = [1]
Output: [[1]]

Example 3:

Input: root = []
Output: []

 

Constraints:

  • The number of nodes in the tree is in the range [0, 2000].
  • -1000 <= Node.val <= 1000
Related Topics
  • 广度优先搜索
  • 二叉树

  • 👍 2155
  • 👎 0
  • 思路

    通过对列进行层序遍历

    解法

    py
    # leetcode submit region begin(Prohibit modification and deletion)
    # 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 []
    
            res = []
    
            def tarverse(quene):
                if not quene:
                    return
                size = len(quene)
                levels = []
                while size > 0:
                    size -= 1
                    node = quene.pop(0)
                    levels.append(node.val)
                    if node.left:
                        quene.append(node.left)
                    if node.right:
                        quene.append(node.right)
                res.append(levels)
    
                tarverse(quene)
    
            tarverse([root])
            return res
    
    # leetcode submit region end(Prohibit modification and deletion)

    复杂度分析

    • 时间复杂度 O(N)
    • 空间复杂度 O(N)