【LeetCode热题100】打卡第29天:二叉树的层序遍历二叉树的最大深度

news2024/10/4 20:21:00

文章目录

  • 【LeetCode热题100】打卡第29天:二叉树的层序遍历&二叉树的最大深度
    • ⛅前言
  • 二叉树的层序遍历
    • 🔒题目
    • 🔑题解
  • 二叉树的最大深度
    • 🔒题目
    • 🔑题解

【LeetCode热题100】打卡第29天:二叉树的层序遍历&二叉树的最大深度

⛅前言

大家好,我是知识汲取者,欢迎来到我的LeetCode热题100刷题专栏!

精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。在此专栏中,我们将会涵盖各种类型的算法题目,包括但不限于数组、链表、树、字典树、图、排序、搜索、动态规划等等,并会提供详细的解题思路以及Java代码实现。如果你也想刷题,不断提升自己,就请加入我们吧!QQ群号:827302436。我们共同监督打卡,一起学习,一起进步。

博客主页💖:知识汲取者的博客

LeetCode热题100专栏🚀:LeetCode热题100

Gitee地址📁:知识汲取者 (aghp) - Gitee.com

Github地址📁:Chinafrfq · GitHub

题目来源📢:LeetCode 热题 100 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台

PS:作者水平有限,如有错误或描述不当的地方,恳请及时告诉作者,作者将不胜感激

二叉树的层序遍历

🔒题目

原题链接:104.二叉树的层序遍历

image-20230628141841840

🔑题解

  • 解法一:BFS

    简单明了

    class Solution {
        public List<List<Integer>> levelOrder(TreeNode root) {
            if (root==null){
                // 防止后面出现NPE
                return Collections.emptyList();
            }
            List<List<Integer>> ans = new ArrayList<>();
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root);
            while (!queue.isEmpty()) {
                // 用于存储当前层所有的叶子节点
                List<Integer> list = new ArrayList<>();
                // 遍历当前层的所有根节点,将当前层根节点下所有叶子节点存入队列中
                // 注意queue的长度是动态变化的,这里需要使用一个变量来存储初始长度
                int len = queue.size(); 
                for (int i = 1; i <= len; i++) {
                    TreeNode node = queue.poll();
                    list.add(node.val);
                    if (node.left != null) {
                        queue.offer(node.left);
                    }
                    if (node.right != null) {
                        queue.offer(node.right);
                    }
                }
                ans.add(list);
            }
            return ans;
        }
    }
    

    复杂度分析:

    • 时间复杂度: O ( n ) O(n) O(n)
    • 空间复杂度: O ( n ) O(n) O(n)

    其中 n n n 为数组中元素的个数

二叉树的最大深度

🔒题目

原题链接:105.二叉树的最大深度

image-20230628143136736

🔑题解

  • 解法一:DFS

    class Solution {
        private int max = Integer.MIN_VALUE;
        public int maxDepth(TreeNode root) {
            dfs(root, 0);
            return max;
        }
    
        private void dfs(TreeNode root, int count) {
            if (root==null){
                if (count > max){
                    max = count;
                }
                return;
            }
            dfs(root.left, count+1);
            dfs(root.right, count+1);
        }
    }
    

    复杂度分析:

    • 时间复杂度: O ( n ) O(n) O(n)
    • 空间复杂度: O ( n ) O(n) O(n)

    n n n为树中节点的数量

    第二种写法:

    class Solution {
        public int maxDepth(TreeNode root) {
            if(root == null) {
                return 0;
            } else {
                int left = maxDepth(root.left);
                int right = maxDepth(root.right);
                return Math.max(left, right) + 1;
            }
        }
    }
    
  • 解法二:BFS

    这里是直接借鉴了二叉树的层序遍历

    class Solution {
        public int maxDepth(TreeNode root) {
            if (root==null){
                return 0;
            }
            int count = 0;
            Queue<TreeNode> queue = new LinkedList<>();
            queue.offer(root);
            while (!queue.isEmpty()){
                count++;
                int len = queue.size();
                for (int i = 1; i <= len; i++) {
                    TreeNode node = queue.poll();
                    if (node.left!=null){
                        queue.offer(node.left);
                    }
                    if (node.right!=null){
                        queue.offer(node.right);
                    }
                }
            }
            return count;
        }
    }
    

    复杂度分析:

    • 时间复杂度: O ( n ) O(n) O(n)
    • 空间复杂度: O ( m ) O(m) O(m)

    其中 n n n 为二叉树中节点的数量, m m m是树的最大宽度

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Stage模型HarmonyOS服务卡片开发ArkTS卡片相关模块

图1 ArkTS卡片相关模块 FormExtensionAbility&#xff1a;卡片扩展模块&#xff0c;提供卡片创建、销毁、刷新等生命周期回调。 FormExtensionContext&#xff1a;FormExtensionAbility的上下文环境&#xff0c;提供FormExtensionAbility具有的接口和能力。 formProvider&…

CASAIM三维扫描仪在运动防护的应用高端运动器材设计定制器材头盔

CASAIM三维扫描技术在运动防护领域有广泛的应用&#xff0c;可以帮助设计和生产高端运动器材&#xff0c;检测运动器材适配性&#xff0c;以提供更好的运动防护。 CASAIM三维扫描仪可以将运动员的身体尺寸和形状精确地捕捉下来&#xff0c;以便制造出符合其个人需求的定制化器…

稳坐钓鱼台,第三大手机操作系统?华为鸿蒙OS 4.0首批测试版推送

华为鸿蒙OS 4.开发者Beta版首期招募正式开始&#xff0c;首批机型包括华为P60、P60 Pro、Mate 50、MatePad Pro 11英寸性能版等8款。 不可思议的是&#xff0c;华为方才开始招募没几天&#xff0c;就已经开始向用户推送鸿蒙OS 4.开发者Beta版的升级。它的更新速度令人瞩目&…

ChatGPT 话题相关和类 ChatGPT 工具 | 优质文章、相关论文、应用、学习资源整理

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 人工智能与手机和互联网一样具有革命性。 2023 年已经过去一半&#xff0c;ChatGPT 在今年以来一直备受瞩目。目前 ChatGPT 的更新速度逐渐放缓&#…

常见的远程协助软件简介

1.RayLink远程控制软件 RayLink是一个支持多系统多设备间相互远程控制的软件&#xff0c;是具有远程制作、远程办公、远程游戏、远程协助等需求的IT技术、游戏玩家、网络办公等这些人的最佳选择。通过使用RayLink&#xff0c;可随时随地远程控制其他电脑或手机&#xff0c;远程…

AI日报:DragGAN通过拖拽像素点实现图像调整 等

&#x1f989; AI新闻 &#x1f680; DragGAN&#xff1a;一种直观的图像编辑工具&#xff0c;通过拖拽像素点实现图像调整 摘要&#xff1a;研究者们来自马克斯・普朗克计算机科学研究所、MIT CSAIL和谷歌&#xff0c;他们开发了一种名为DragGAN的图像编辑工具。通过拖拽像素…

MATLAB 之 Simulink 子系统及其封装

这里写目录标题 一、子系统及其封装1. 子系统的创建1.1 通过 Subsystem 模块建立子系统1.2 通过已有的模块建立子系统 2. 子系统的条件执行2.1 使能子系统2.2 触发子系统2.3 使能加触发子系统 3. 子系统的封装3.1 lcon & Ports 选项卡的参数设置3.2 Parameters & Dialo…

最大池化|知识补充

最大池化的超参数&#xff1a;规模为2的过滤器&#xff0c;步幅为2 对于左上角深蓝色的区域&#xff0c;其中最大的数值是9&#xff0c;所以得到的输出为9&#xff1b; 向右移动两个步幅&#xff0c;输出为2&#xff1b; 第二行&#xff0c;22的绿色区域内输出为6&#xff1b;…

2023版新鲜出炉,1000多道互联网Java高频面试真题及详解汇总

最近感慨面试难的人越来越多了&#xff0c;一方面是市场环境&#xff0c;更重要的一方面是企业对Java的人才要求越来越高了。 基本上这样感慨的分为两类人&#xff1a; 第一&#xff0c;虽然挂着3、5年经验&#xff0c;但肚子里货少&#xff0c;也没啥拿得出手的项目&#xff…

元宇宙装备展正式拉开帷幕,深眸科技CEO周礼出席产业论坛发表主题演讲

6月27日&#xff0c;一场令人期待已久的工业元宇宙盛会在昆山国际会展中心拉开帷幕&#xff0c;大会由昆山市人民政府主办&#xff0c;昆山市工业和信息化局、赛迪工业和信息化研究院集团&#xff08;苏州&#xff09;有限公司联合承办&#xff0c;并得到了十数家单位的支持&am…

Python入门的60个基础练习(二)

关注“Python专栏”微信公众号&#xff0c;回复暗号【面试大全】&#xff0c;立即领取面试题简历模板。 21-while-break break 是结束循环&#xff0c;break 之后、循环体内代码不再执行。 while True:yn input(Continue(y/n): )if yn in [n, N]:breakprint(running...)22-w…

机器学习12:分类 Classification

分类&#xff08;Classification&#xff09;是一个有监督的学习过程&#xff0c;目标数据集&#xff08;示例集&#xff09;中具有的类别是已知的&#xff0c;分类过程需要做的就是把每一条记录归到对应的类别下。由于必须事先知道各个类别的信息&#xff0c;并且所有待分类的…

vite项目集成eslint和prettier

一、eslint介绍 eslint中文官网&#xff1a;https://zh-hans.eslint.org/docs/latest/use/getting-started 1. 什么是eslint ESLint是一个开源的JavaScript代码静态分析工具&#xff0c;用于找出代码中的问题&#xff0c;并提供一致的编码风格。它可以扫描代码&#xff0c;并…

SpringCloud之Stream消息驱动RocketMQ讲解

文章目录 1 Stream消息驱动1.1 简介1.1.1 定义1.1.2 抽象模型1.1.3 绑定器 1.2 操作实操1.2.1 pom.xml1.2.2 操作实体 1.3 Stream 3.x 之前操作1.3.1 自定义通道1.3.2 消费消息1.3.3 发送消息1.3.4 配置文件 1.4 Stream 3.x 之后操作1.4.1 Stream 3.x 之后讲解1.4.2 消费消息1.…

linux屏幕旋转/weston去掉边框

目录 屏幕旋转 去掉边框 buildroot运行QT&#xff0c;你需要修改的都在这里了。 首先QT界面大小需要适应屏幕的分辨率&#xff0c;如果屏幕是1280*800&#xff0c;QT界面大小就不能设置为800*1280&#xff0c;一样需要设置为1280*800 屏幕旋转 方法一&#xff1a; xrandr…

GBASE观察 | 展望大模型与数据库相融合的未来

大模型和数据库的相互作用是数据处理领域的重要发展趋势之一&#xff0c;在目前的大数据时代中正发挥着越来越重要的作用。大模型需要依托于海量数据进行训练和学习&#xff0c;在实际应用中需要依托于数据库进行实时的数据存储、筛选、处理、甚至还可以实现数据的可视化和转化…

计算机网络-数据链路层上篇

目录 一、数据链路层概述 二、封装成帧 三、差错检测 &#xff08;一&#xff09;奇偶校验 &#xff08;二&#xff09;循环冗余校验CRC 四、可靠传输 &#xff08;一&#xff09;停止-等待协议SW &#xff08;二&#xff09;后退N帧协议GBN &#xff08;三&#xff…

代码随想录二刷day37 | 贪心 之 738.单调递增的数字 968.监控二叉树

day37 738.单调递增的数字968.监控二叉树确定遍历顺序如何隔两个节点放一个摄像头情况1&#xff1a;左右节点都有覆盖情况2&#xff1a;左右节点至少有一个无覆盖的情况情况3&#xff1a;左右节点至少有一个有摄像头情况4&#xff1a;头结点没有覆盖 738.单调递增的数字 题目链…

H5学习(四)-- 常用属性

文章目录 一、字体设置字体格式设置字体大小设置字体粗细设置字体样式设置字体颜色 二、 文本设置文本对齐方式设置文本装饰方式设置文本缩进设置文本行高 三、背景设置背景颜色设置背景图片设置背景平铺设置背景位置设置背景尺寸 四、圆角矩形五、元素的显示模式块级元素行内元…

解决win10开机卡顿、配置很高但是玩游戏卡顿掉帧等问题

解决win10开机卡顿、配置很高但是玩游戏卡顿掉帧等问题 最近组装了一台高配置的新电脑&#xff0c;装好了各种驱动、软件等。发现系统开机后卡顿一分钟左右&#xff08;加载应用配置等&#xff09;&#xff0c;但是我的系统启动项明明就没多少&#xff0c;不应该是这样的情况&…