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
相关推荐
未来之窗软件服务36 分钟前
自己写算法(九)网页数字动画函数——东方仙盟化神期
前端·javascript·算法·仙盟创梦ide·东方仙盟·东方仙盟算法
豐儀麟阁贵43 分钟前
基本数据类型
java·算法
乐迪信息2 小时前
乐迪信息:基于AI算法的煤矿作业人员安全规范智能监测与预警系统
大数据·人工智能·算法·安全·视觉检测·推荐算法
hsjkdhs3 小时前
C++之多层继承、多源继承、菱形继承
开发语言·c++·算法
立志成为大牛的小牛3 小时前
数据结构——十七、线索二叉树找前驱与后继(王道408)
数据结构·笔记·学习·程序人生·考研·算法
星空下的曙光3 小时前
Node.js crypto模块所有 API 详解 + 常用 API + 使用场景
算法·node.js·哈希算法
Algo-hx3 小时前
数据结构入门 (七):从“链接”到“分支” —— 初探树与二叉树
数据结构
小贾要学习4 小时前
【数据结构】C++实现红黑树
数据结构·c++
StarPrayers.5 小时前
旅行商问题(TSP)(2)(heuristics.py)(TSP 的两种贪心启发式算法实现)
前端·人工智能·python·算法·pycharm·启发式算法
爱吃橘的橘猫5 小时前
嵌入式系统与嵌入式 C 语言(2)
c语言·算法·嵌入式