LeetCode 102. 二叉树的层序遍历BFS

简介: LeetCode 102. 二叉树的层序遍历BFS

 LeetCode 102. 二叉树的层序遍历BFS

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。

示例 1:

image.gif 编辑

输入: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


    思路:利用队列 queue 先进先出的特性,按层次逐层遍历


    时间复杂度:O(N)

    空间复杂度:O(N)

    /*** Definition for a binary tree node.* type TreeNode struct {*     Val int*     Left *TreeNode*     Right *TreeNode* }*/funclevelOrder(root*TreeNode) [][]int {
    res :=make([][]int, 0)
    queue :=make([]*TreeNode, 0)
    ifroot!=nil {
    queue=append(queue, root) // 首先,根节点入队    }
    forlen(queue) >0 {
    subRes :=make([]int, 0)
    length :=len(queue)    // 提前缓存上一轮queue大小,避免在内循环中append导致queue长度变化fori :=0; i<length; i++ {
    root :=queue[0]
    subRes=append(subRes, root.Val)
    queue=queue[1:]   // popifroot.Left!=nil {
    queue=append(queue, root.Left)
                }
    ifroot.Right!=nil {
    queue=append(queue, root.Right)
                }
            }
    res=append(res, subRes)
        }
    returnres}

    image.gif


    目录
    相关文章
    |
    2月前
    |
    Python
    【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
    本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
    45 6
    |
    2月前
    |
    存储 算法
    二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
    文章深入探讨了二叉树的层序遍历方法,并展示了如何通过队列实现层序遍历的算法逻辑,同时指出掌握层序遍历技巧可以帮助解决LeetCode上的多道相关题目。
    二叉树进阶-学会层序遍历助你一次刷完leetcode10道题
    |
    2月前
    |
    算法 Java
    LeetCode第94题二叉树的中序遍历
    文章介绍了LeetCode第94题"二叉树的中序遍历"的解法,使用递归实现了中序遍历的过程,遵循了"左根右"的遍历顺序,并提供了清晰的Java代码实现。
    LeetCode第94题二叉树的中序遍历
    |
    2月前
    |
    索引 Python
    【Leetcode刷题Python】从列表list中创建一颗二叉树
    本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
    40 7
    |
    2月前
    |
    Python
    【Leetcode刷题Python】剑指 Offer 32 - II. 从上到下打印二叉树 II
    本文提供了一种Python实现方法,用于层次遍历二叉树并按层打印结果,每层节点按从左到右的顺序排列,每层打印到一行。
    30 3
    |
    2月前
    |
    存储 算法 Java
    LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
    LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
    65 0
    |
    2月前
    |
    算法 Java
    LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
    LeetCode初级算法题:子数组最大平均数+二叉树的最小深度+最长连续递增序列+柠檬水找零
    34 0
    |
    6天前
    |
    Unix Shell Linux
    LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
    本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
    LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
    |
    2月前
    |
    Python
    【Leetcode刷题Python】剑指 Offer 26. 树的子结构
    这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
    39 4
    |
    2月前
    |
    搜索推荐 索引 Python
    【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
    本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
    82 2