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

相关推荐
青 春 记 忆32 分钟前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
To_OC38 分钟前
LC 239 滑动窗口最大值:从暴力超时到单调队列一遍过
javascript·算法·leetcode
Python私教1 小时前
多个项目怎么安全合并?先适配,再切换
后端·python·架构
.道阻且长.2 小时前
9.LeetCode算法习题讲解--滑动窗口--无重复字符的最长字串
算法·leetcode·职场和发展·哈希算法
ltl3 小时前
HNSW:图索引如何击败树索引
算法
北斗落凡尘3 小时前
LangGraph 入门实战(12)--使用MCP
后端·python·langchain
jdksjw3 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Mike_Zhang4 小时前
使用python统计FreeSWITCH呼叫并发
python·freeswitch
SL-staff4 小时前
技术实践:HR如何用JVS-Logic可视化编排实现考勤数据同步(含节点配置与异常处理)
开发语言·python·低代码·钉钉·可视化编排·jvs-logic·hr技术
曹牧4 小时前
C#:数字的定义和表示方式
算法·c#