leecode刷题 二叉树的层级遍历

简介: 层序遍历二叉树,即按层次从左到右访问所有节点。给定二叉树的根节点 `root`,返回其节点值的层序遍历结果。每个层级的节点值存储在一个子列表中,最终返回一个包含这些子列表的列表。解决方案使用递归方法,通过 `Map` 记录每一层的节点值,最后将各层的结果按顺序加入最终结果列表中。

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

示例 1:
image.png

输入: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

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 * int val;
 * TreeNode left;
 * TreeNode right;
 * TreeNode() {}
 * TreeNode(int val) { this.val = val; }
 * TreeNode(int val, TreeNode left, TreeNode right) {
 * this.val = val;
 * this.left = left;
 * this.right = right;
 * }
 * }
 */
class Solution {
   
    public List<List<Integer>> levelOrder(TreeNode root) {
   
        List<List<Integer>> nums = new ArrayList();
        Map<Integer, List<Integer>> map = new HashMap();
        int level = 0;

        map = getLevelSub(root, level, map);
        for (int i = 0; i < map.size(); i++) {
   
            nums.add(map.get(i));
        }

        return nums;
    }

    public Map<Integer, List<Integer>> getLevelSub(TreeNode root, int level, Map<Integer, List<Integer>> map) {
   
        if (root == null) {
   
            return map;
        }
        if (!map.containsKey(level)) {
   
            map.put(level, new ArrayList());
        }
        map.get(level).add(root.val);
        getLevelSub(root.left, level + 1, map);
        getLevelSub(root.right, level + 1, map);
        return map;
    }
}

问题关键点在于,如何构建每个层级的数组,开始的时候,我希望一次搞定,通过数组合并的方式,数据合并有个问题,我必须知道要合并的数组是哪些,这个在递归的过程会丢失.转换思路,其实只要知道每个数组的索引即可,数组的索引其实就是二叉树的层数,使用map记录层数,就可以解决这个问题

相关文章
|
关系型数据库 MySQL 数据库
rds迁移数据迁移工具选择
rds迁移数据迁移工具选择
564 3
|
1月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
362 130
|
1月前
|
人工智能 自然语言处理 Java
从 Java 到 AI:三周求职冲刺打卡,步步为营拿 offer
本计划帮助具备Java、.NET、Vue背景的开发者三周内转型为AI应用工程师,专注实战,聚焦模型调用、RAG、Prompt工程等技能,完成多个AI应用项目,打造可用于求职的简历与作品集。
261 9
|
1月前
|
人工智能 前端开发 Java
Java 转 AI 不用慌!3 周求职打卡表,帮你按天推进、高效拿 offer
三周(21天)AI应用工程师转型打卡计划,涵盖Python基础、Prompt工程、实战项目与面试准备,每日明确任务目标,助力系统学习与进度追踪。
291 7
|
2月前
|
Shell 网络安全 开发工具
项目快速导入git
本文介绍了如何在本地初始化 Git 仓库并将代码提交到远程仓库(如 GitHub 或 Gitee)的基本流程。内容包括安装 Git、创建仓库、添加文件、提交更改以及推送代码到远程仓库的详细步骤,适合初学者快速掌握 Git 的基本使用方法。
127 1
|
9月前
|
人工智能 算法 机器人
专访汶生|或许你没有听过具身智能实训,但是已经有人这样做了
汶生在2023年底创办TsingtaoAI公司之前,就已经深入具身智能高校实训领域和AI人才培养方面。最近一年,汶生带领核心技术团队完成了具身智能高校实训解决方案、AI Agent应用开发实训解决方案和华为昇腾910B算力卡的大模型部署和调优实训方案。这些方案赋能与高校CS/AI专业的实训和企业IT/AI员工的内训,通过前沿技术和实训解决方案的结合,让学习者可以迅速掌握AI/具身智能/智算行业的核心和前沿技术。
210 10
|
算法
比较for、for...in、for...of、forEach的区别
【10月更文挑战第9天】
542 139
|
8月前
|
人工智能 API 开发者
通过宏实现Word接入DeepSeek
本文介绍如何在Microsoft Word中通过宏接入DeepSeek,实现自动化文本处理。首先确保具备Word 2016及以上版本、DeepSeek API密钥和VBA基础。接着,从豆包平台获取API密钥及模型ID,并在Word中启用开发者选项和宏功能。最后,编写VBA宏代码调用DeepSeek API,完成文本分析与处理。
585 0
|
Java 测试技术 API
使用System.currentTimeMillis获取当前时间
使用System.currentTimeMillis获取当前时间
|
11月前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。