107.二叉树的层序遍历II- 力扣(LeetCode)

题目:

给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)

示例 1:

输入:root = [3,9,20,null,null,15,7]

输出:[[15,7],[9,20],[3]]

示例 2:

输入:root = [1]

输出:[[1]]

示例 3:

输入:root = []

输出:[]

提示:

  • 树中节点数目在范围 [0, 2000] 内

  • -1000 <= Node.val <= 1000

思路如下:

102题基础上结果倒转。

题解如下:
python 复制代码
#两个数组
class Solution:
    def levelOrder(self, root):
        """
                  :type:  root: Optional[TreeNode]
                  :rtype: List[List[int]]
        """
        if root is None:
            return []
        ans = []
        cur = [root]
        while cur:
            nxt = []       # 存储下一层的节点
            vals = []      # 存储当前层的节点值
            for node in cur:
                vals.append(node.val)   # 收集当前层节点的值
                if node.left: nxt.append(node.left)   # 左子节点加入下一层
                if node.right:nxt.append(node.right)  # 右子节点加入下一层
            cur = nxt        # 更新当前层为下一层
            ans.append(vals) # 将当前层结果加入最终列表
        return ans[::-1]
#一个队列
class Solution:
    def levelOrder(self, root):
        """
                  :type:  root: Optional[TreeNode]
                  :rtype: List[List[int]]
        """
        if root is None:
            return []
        ans = []
        q = deque([root])
        while q:
        	vals = []
        	for _ in range(len(q)):  # 固定当前层的节点数量
            	node = q.popleft()   # 弹出队列最左侧节点(先进先出)
            	vals.append(node.val)
            	if node.left: q.append(node.left)   # 左子节点加入队列
            	if node.right:q.append(node.right)  # 右子节点加入队列
        	ans.append(vals)
        return ans[::-1]

倒转代码:return ans[::-1]

相关推荐
南星啊2 分钟前
【模板】缩点
算法·图论
Thanks_ks36 分钟前
探索 Go 与 Python:性能、适用场景与开发效率对比
python·go·性能·开发效率·编程语言对比·适用场景·web 爬虫
_extraordinary_2 小时前
笔试专题(八)
算法
kyle~2 小时前
ROS2---std_msgs基础消息包
开发语言·python·机器人·ros·机器人操作系统
满怀10152 小时前
【NumPy科学计算引擎:从基础操作到高性能实践】
开发语言·python·numpy
&zzz3 小时前
Python生成exe
开发语言·python
Python×CATIA工业智造3 小时前
基于PySide6与pycatia的CATIA绘图比例智能调节工具开发全解析
python·pycharm·自动化·catia二次开发
爱代码的小黄人5 小时前
深入解析系统频率响应:通过MATLAB模拟积分器对信号的稳态响应
开发语言·算法·matlab
vsropy5 小时前
matlab安装python API 出现Invalid version: ‘R2022a‘,
开发语言·python
atec20006 小时前
使用uv管理python项目环境
开发语言·python·uv