当前位置: 首页 > news >正文

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题基础上结果倒转。

题解如下:
#两个数组
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]

相关文章:

  • opencv(C++)用直方图统计像素
  • 动态多目标优化:基于可学习预测的动态多目标进化算法(DIP-DMOEA)求解CEC2018(DF1-DF14),提供MATLAB代码
  • pair与tuple
  • 缓存与数据库一致性:从问题到解决方案全解析
  • 04-微服务 面试题-mk
  • 斐波那契数列 (Fibonacci Sequence) C++
  • 0.DockerCE起步之Linux相关【完善中】
  • 提示词 (Prompt)
  • 树上搜索 第32次CCF-CSP计算机软件能力认证
  • 激光院董事长龚赤坤到北京研发中心检查指导工作
  • 深入解析 Spring AI ChatClient:构建高效 AI 应用的终极指南
  • 2025年3月 Scratch图形化四级 真题解析 中国电子学会全国青少年软件编程等级考试
  • ida 使用记录
  • 基于javaweb的SpringBoot新闻视频发布推荐评论系统(源码+部署文档)
  • Windows系统Python多版本运行解决TensorFlow安装问题(附详细图文)
  • 【我的创作纪念日】
  • 使用MVC模式开发cocos游戏功能
  • 基于springboot餐饮连锁店管理系统
  • HTML — 浮动
  • 2-刷力扣问题记录
  • 惠州做网站公司哪家好/成都网络推广哪家好
  • 要建一个网站该怎么做/网站注册
  • 在什么网站能找到做外贸的邮箱/seo推广有哪些
  • 万网虚拟服务器怎么做网站内容/公司网站制作公司
  • 网站必须做可信认证吗/最新军事新闻 今日 最新消息
  • php手机网站如何制作教程/seo引流什么意思