LeetCode刷题之HOT100之二叉树的遍历

2024/6/14 这几天总是下雨,天气预报上面显示这个月都要持续下雨,下雨天了怎么办?我好想你,不敢打给你,我找不到原因。说着说着唱起来了哈哈!Anyway,昨天晚上打开了《涅朵奇卡一个女人的一生》,这本篇幅不长的小说我很久前就想看,还是从王小波那里知道的这本书,才开始看陀思妥耶夫斯基,看杜拉斯,茨威格等外国文学。那么接下来做个题放松一下吧。

1、题目描述

在这里插入图片描述

2、逻辑分析

题目要求对二叉树进行层序遍历,由于学过数据结构,对这些概念就较清晰。层序遍历抽象来说:就是把二叉树想象成蛋糕,一层一层的切下来。so,这题以什么算法来求解呢?与层序遍历结合的算法就是广度优先搜索(BFS),传统的BFS是一个节点一个节点的遍历,而这题可以在此基础上改进优化。比如示例1,首先我们设计一个队列。

  • 初始:根节点进队列,此时队列里面只有3
  • 队列里面所有元素出队,即3出队,对3的左右子树遍历,此时[9,20]进队。
  • 队列里面所有元素出队,即[9,20]出队,遍历左右子树,为[15,7]

最后返回[[3],[9,20],[15,7]]。因为画图来说明会清晰,但是画图太麻烦了,遂不画了嘿嘿,代码展示。
有个题解讲的很清晰呀!图文并茂,比官方的好很多,放过来:层序遍历讲解。

3、代码演示

public List<List<Integer>> levelOrder(TreeNode root) {
        // 初始化一个二维列表来存储结果
        List<List<Integer>> res = new ArrayList<List<Integer>>();
        // 如果根节点为空,则直接返回空的结果列表
        if(root == null){
            return res;
        }
        // 初始化一个队列,用于层序遍历 
        Queue<TreeNode> queue = new LinkedList<TreeNode>();
        // 将根节点加入队列
        queue.offer(root);
        // 当队列不为空时,继续遍历
        while(!queue.isEmpty()){
            // 初始化一个列表,用于存储当前层的节点值
            List<Integer> level = new ArrayList<Integer>();
            // 获取当前队列中的节点数,即当前层的节点数
            int curQueueLevel = queue.size();
            // 遍历当前层的所有节点
            for(int i = 0; i < curQueueLevel; i++){
                // 从队列中取出一个节点
                TreeNode node = queue.poll();
                // 将节点的值添加到当前层的列表中
                level.add(node.val);
                // 如果节点的左子节点不为空,则将其加入队列
                if(node.left != null ){
                    queue.offer(node.left);
                }
                // 如果节点的右子节点不为空,则将其加入队列
                if(node.right != null){
                    queue.offer(node.right);
                }
            }
            // 将当前层的节点值列表添加到结果列表中
            res.add(level);
        }
        // 返回结果列表 
       return res;
    }

以上代码注释清晰,作题还是得多练啊,练着练着就知道怎么做了。

4、复杂度分析

  • 时间复杂度:O(n)。这里我们实际也是对每个节点都遍历访问了,故时间复杂度是O(n)。
  • 空间复杂度:O(n)。最差情况下,即当树为平衡二叉树时,最多有 n/2个树节点同时在 队列中,使用 O(n) 大小的额外空间。

over,写完啦!真的很耗时间啊,刷leetcode,慢慢来吧
less is more.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/707572.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue3:解决在main.ts 中调用自定义的js文件会报错的问题

案例&#xff1a;Vue3 &#xff0c;使用的是main.ts &#xff0c;在main.ts 中调用自定义的ruoComment.js文件会报错&#xff0c; 页面报错&#xff1a; main.ts文件引用报错&#xff1a; 解决报错&#xff1a;找到tsconfig.json文件 加上如下代码&#xff1a;即可解决问题 &q…

IDC最新报告,7大维度11家大模型厂商比拼,唯一全优是谁?

如果考试题太简单&#xff0c;学渣也能拿一百昏。在 AI 圈&#xff0c;我们应该拿怎样的「试卷」来检验一直处于流量 C 位的大模型的真实水平&#xff1f;是高考题吗&#xff1f;当然不是&#xff01; 也有些人认为&#xff0c;在各种 Benchmark 榜单上&#xff0c;谁排第一谁…

ai 人工智能免费网站免费生成图片生成ppt

豆包 Kimi.ai - 帮你看更大的世界 生成ppt 讯飞智文 - AI在线生成PPT、Word 大家如有其它免费的欢迎推荐!!!

动力学仿真平台:让模型配置与仿真测试更高效!

背景概述 动力学仿真平台是一种基于计算机技术的模拟工具&#xff0c;旨在模拟和分析物理系统中的动力学行为。通过建立数学模型&#xff0c;并借助高效的数值计算方法来模拟复杂系统的运动规律&#xff0c;为科研、设计、工程等领域提供重要的决策支持。动力学仿真平台的重要性…

图像算法之镜头畸变

桶形畸变&#xff08;Barrel Distortion&#xff09;&#xff1a; 桶形畸变是一种常见于广角镜头的畸变类型。在桶形畸变中&#xff0c;图像的中心区域被向外拉伸&#xff0c;使得直线在图像边缘部分显得向内弯曲&#xff0c;看起来像一个桶。这种畸变之所以发生&#xff0c;是…

Linux操作系统学习路线

本文来自Qwen2大模型&#xff1a; Linux操作系统的全面学习是一个渐进的过程&#xff0c;涵盖从基础知识到高级特性的多个阶段。以下是一份详细的Linux操作系统学习路线图&#xff0c;包括各个阶段的学习目标、建议的学习资源和实践步骤。 1. Linux 基础知识与安装 学习目标&a…

CD工具awx之清单Inventory,管理应用与主机的多对多关系

一、什么是清单 它决定的是一个应用部署到哪些目标机&#xff0c;清单管理的是应用&#xff08;组&#xff09;关联了哪些主机&#xff08;目标机&#xff09;。 1、新建清单 2、新建组 3、关联主机 新增主机或关联已有的主机 新主机 现有主机 服务关联主机完成&#xf…

ElementPlus国际化(将组件的默认语言改为中文)

文章目录 1. Element-plus的默认语言2. 编辑 main.js 文件3. 效果&#xff08;以分页条组件为例&#xff09; 1. Element-plus的默认语言 Element-plus的默认语言是英语&#xff0c;可修改为其它语言 2. 编辑 main.js 文件 import {createApp} from vue import ElementPlus …

deepin V23 RC2 正式发布!

deepin 是一款基于 Linux 的开源桌面操作系统&#xff0c;今天 deepin V23 RC2 正式发布&#xff0c;欢迎体验与反馈&#xff01;感谢每一位 deepiner 提供想法与建议&#xff0c;让我们一起为打造美观易用、安全可靠的开源操作系统而努力&#xff01; 【功能新增与优化】 新增…

电脑自带录屏在哪?电脑录屏,4个详细方法

在现代社会中&#xff0c;越来越多的人需要在电脑上录制视频&#xff0c;比如录制游戏操作、制作教学视频、演示文稿等等。因此&#xff0c;电脑录屏成为了一项非常重要的功能。那么电脑自带录屏在哪&#xff1f;本文将带领大家看看可以使用哪些方法进行录屏。 录屏方法一&…

CC攻击的有效应对方案

随着互联网的发展&#xff0c;网络安全问题愈发突出。CC攻击&#xff08;Challenge Collapsar Attack&#xff09;&#xff0c;一种针对Web应用程序的分布式拒绝服务&#xff08;DDoS&#xff09;攻击方式&#xff0c;已经成为许多网络管理员和网站拥有者不得不面对的重大挑战。…

什么?项目经理也算经理?

今天偶然看到一个有意思的问题&#xff1a;“如何破解项目经理的无权、无利、有责的现状”&#xff1f; 乍看有点费解&#xff0c;细想还挺有意思&#xff0c;这不禁引发了我的思考&#xff0c;项目经理到底算不算经理&#xff1f; 从管理学的角度来看&#xff0c;根据亨利法约…

电信网关配置管理系统 del_file.php 前台RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…

笔记本电脑怎么连接无线网WiFi?4个连接方法分享!

“我新买了一台笔记本电脑&#xff0c;现在不知道怎么操作才能连接无线网。有朋友知道应该怎么操作吗&#xff1f;希望大家给我分享一下简单的方法。” 在数字化飞速发展的今天&#xff0c;笔记本电脑作为我们日常生活与工作中不可或缺的工具&#xff0c;其无线连接功能的重要性…

五分钟看完WWDC24

大家好&#xff0c;我是小编阿文。欢迎您关注我们&#xff0c;经常分享有关Android出海&#xff0c;iOS出海&#xff0c;App市场政策实时更新&#xff0c;互金市场投放策略&#xff0c;最新互金新闻资讯等文章&#xff0c;期待与您共航世界之海。 北京时间6月11日凌晨1点&…

智能化六面体大米装袋机:如何助力提升包装效率与质量

在快节奏的现代社会&#xff0c;高效、精准的包装设备对于提升大米产业的生产效率与产品质量至关重要。近年来&#xff0c;随着科技的不断进步&#xff0c;智能化六面体大米装袋机凭借其较好的性能和便捷的操作&#xff0c;逐渐成为大米加工企业的新宠。星派将深入探讨智能化六…

管理十大定律:深度解析与实际应用

在复杂多变的企业管理环境中&#xff0c;掌握并运用一些基本的定律和规律&#xff0c;对于提升管理效率、优化资源配置具有至关重要的作用。 1、马太效应 定律解析&#xff1a;马太效应描述了资源分配中的一种累积优势现象&#xff0c;即强者愈强&#xff0c;弱者愈弱。这源…

化学品危险性分类鉴定报告 危化品危险性分类

一、化学品危险性分类报告&#xff1a; 按照国务院令 第591号 《危险化学品安全管理条例》、原十部委公告 2015年 第5号 《危险化学品目录&#xff08;2015版&#xff09;》、原安监总局令 第60号《化学品物理危险性鉴定与分类管理办法》和原安监总局令 第53号《危险化学品登记…

KTH4603 3D Hall传感器在强磁入侵检测中的应用

背景介绍 电子系统一直面临强磁干扰的威胁&#xff0c;保护这些设备免受强磁干扰成为一个重要课题。非法者通过施加强磁意图篡改或干扰它们&#xff0c;窃取产品或服务。强磁场可以对电子设备产生严重的影响&#xff0c;包括但不限于&#xff1a;数据损坏、功能故障、安全隐患…

2024脑卒中评估量表分享

常笑医学整理了5个常用的脑卒中评估量表&#xff0c;供临床医护工作人员参考。 Essen脑卒中风险评分量表-常笑医学网​ &#xff08;完整量表请点击量表名称查看&#xff09; Essen脑卒中风险评估量表&#xff0c;是一个简便、易于临床操作的9分量表&#xff0c;是根据氯吡格雷…