LeetCode 102. 二叉树的层序遍历 Binary Tree Level Order Traversal

简介: LeetCode 102. 二叉树的层序遍历 Binary Tree Level Order Traversal

LeetCode 102. 二叉树的层序遍历 Binary Tree Level Order Traversal


Table of Contents

一、中文版

二、英文版

三、My answer

四、解题报告


一、中文版

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

 

示例:

二叉树:[3,9,20,null,null,15,7],

   3

  / \

 9  20

   /  \

  15   7

返回其层次遍历结果:

[

 [3],

 [9,20],

 [15,7]

]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


二、英文版

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

For example:

Given binary tree [3,9,20,null,null,15,7],

   3

  / \

 9  20

   /  \

  15   7

return its level order traversal as:

[

 [3],

 [9,20],

 [15,7]

]


三、My answer

# 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 not root:
            return []
        res = []
        cur_level = [root]
        while cur_level:
            cur_val = []
            next_level = []
            for node in cur_level:
                cur_val.append(node.val)
                if node.left:
                    next_level.append(node.left)
                if node.right:
                    next_level.append(node.right)
            cur_level = next_level
            res.append(cur_val)
        return res


四、解题报告

本题解使用 BFS 实现层次遍历。

用 list 完成队列的功能:队列会有弹出和压入的过程,本题中遍历完一层直接把 list 赋值为下一层的节点列表。

注意题目中要输出的是节点的值,也就是 cur_val 的作用。

相关文章
|
7月前
|
存储 C++ Python
leetcode-429:N 叉树的层序遍历
leetcode-429:N 叉树的层序遍历
37 0
|
7月前
|
算法
LeetCode 102. 二叉树的层序遍历
LeetCode 102. 二叉树的层序遍历
37 0
Leetcode 236. Lowest Common Ancestor of a Binary Tree
根据LCA的定义,二叉树中最小公共祖先就是两个节点p和q最近的共同祖先节点,LCA的定义没什么好解释的,主要是这道题的解法。
44 0
|
7月前
|
Java C++ Python
leetcode-102:二叉树的层序遍历
leetcode-102:二叉树的层序遍历
47 0
|
2月前
【LeetCode 28】102.二叉树的层序遍历
【LeetCode 28】102.二叉树的层序遍历
18 2
|
4月前
|
存储 Python
【Leetcode刷题Python】103. 二叉树的锯齿形层序遍历
LeetCode上103号问题"二叉树的锯齿形层序遍历"的Python实现,使用了双端队列来实现层与层之间交替的遍历顺序。
23 3
|
4月前
|
Python
【Leetcode刷题Python】102. 二叉树的层序遍历
LeetCode上102号问题"二叉树的层序遍历"的两种Python实现方法:使用递归和使用双端队列。
27 2
|
4月前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
83 0
|
6月前
|
存储 机器学习/深度学习 算法
LeetCode 题目 102:二叉树的层序遍历
LeetCode 题目 102:二叉树的层序遍历
|
6月前
|
算法 数据可视化 数据挖掘
LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )
LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )
LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )