[每日一题][找工作第34天][2025-10-26] Leetcode 102. 二叉树的层序遍历

题目

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

我的代码(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
class Solution:
    def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]:
        result = []
        if not root:
            return result
        currLvl = [root]
        nextLvl = []
        while len(currLvl) != 0:
            currResult = []
            for node in currLvl:
                currResult.append(node.val)
                nextLvl.append(node.left) if node.left else None
                nextLvl.append(node.right) if node.right else None
            currLvl = nextLvl
            nextLvl = []
            result.append(currResult)
        return result

点评

难度不高,也没有什么特别的算法,差异就在于如何实现栈或者类似结构。
实际上用一个长数组或者list之类的结构把所有结点都存储起来是可行的,官方也差不多是这个思路。
我用了两个list缓存当前层和下一层,在当前层遍历之后把当前层指向下一层,少了些内存使用,但是多了一些创建和删除的开销,难说哪个更好。


baddif@gmail.com

AI简历优化站

Nonpareil.me:优化简历,助力职场
开源代码

AI求职跟踪器(建设中)

开源代码

主站(建设中)

Nonpareil Me

相关平台

Github Issues / Notion / Blog

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部