leetcode二叉树(五)-二叉树层序遍历

题目

102.二叉树的层序遍历

给你二叉树的根节点 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
相关推荐
java_nnnn16 分钟前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
小羊没烦恼!25 分钟前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
wanderist.32 分钟前
202609CSP认证P3
算法
云淡风轻~窗明几净1 小时前
角谷猜想最接近严格证明的测试 Version1.1.1
人工智能·算法·机器学习·图论
机器学习之心1 小时前
PINN × SVM × NSGA-II × 熵权TOPSIS:一套跑通「建模—优化—决策」的多目标优化框架
算法·机器学习·支持向量机
别动我齐刘海2 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
fish_zzzz2 小时前
笔记-论数据结构1
数据结构
文丑颜不良啊3 小时前
LeetCode276~300题目解析
java·leetcode
荆棘鸟智能3 小时前
短历时洪水预报算法实践:水文模型与 LightGBM 残差订正融合
人工智能·算法·机器人
葫三生3 小时前
关于三生原理系列被技术开发社区批量收录或引发策展边界讨论的一种思考
大数据·人工智能·深度学习·算法·机器学习·数据挖掘·开源