DFS与回溯专题:二叉树的最大深度

news2025/1/16 5:53:25

    DFS与回溯专题:二叉树的最大深度

题目链接: 104.二叉树的最大深度

题目描述

在这里插入图片描述

代码思路

设置两个变量,max来记录最大值,sum来记录路径的节点数量。利用dfs对二叉树进行搜索,遇到节点,则sum+1;遇到叶子节点,则将max与sum进行比较,取最大值

代码纯享版

class Solution {

    public int max = 0;
    
    public int maxDepth(TreeNode root) {
        int sum = 0;
        dfs(root, sum);
        return max;
    }

    void dfs(TreeNode root, int sum){

        if(root == null) return;

        sum ++;

        if(root.left == null || root.right == null){
            max = Math.max(max, sum);
        }

        dfs(root.left, sum);
        dfs(root.right, sum);
    }
}

代码逐行解析版

class Solution {

    public int max = 0; //最长路径上的节点数
    
    public int maxDepth(TreeNode root) {
        int sum = 0; //统计路径上的节点数
        dfs(root, sum);
        return max;
    }

    void dfs(TreeNode root, int sum){

        if(root == null) return; //节点为空,直接返回

        sum ++; //节点不为空,路径上的节点数加一

        if(root.left == null || root.right == null){ //已经是叶子节点
            max = Math.max(max, sum); //记录最大值
        }

        //对该节点的左右子节点进行搜索
        dfs(root.left, sum);
        dfs(root.right, sum);
    }
}

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

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

相关文章

路由过滤与引入

1、实验拓扑 2、实验要求 1、按照图示配置 IP 地址,R1,R3,R4 上使用 1oopback口模拟业务网段 2、运行 oSPF,各自协议内部互通 3、R1 和 R2 运行 RIPv2,R2,R3和R4在 RIP 和 oSPF 间配置双向路由引入,要求除 R4 上的业务…

Java web应用性能分析服务端慢之Nginx慢

一般Nginx作为整个应用的入口,即做静态服务器,也做负载均衡、反向代理;同时也因为位置靠前,还可以通过Nginx对于访问的IP、并发数进行相应的限制。在Java web应用性能分析中,Nginx是重要环节,Nginx的性能也…

SpringMvc(2)RequestMapping注解

RequestMapping注解 1 、RequestMapping的作用2、RequestMapping的出现位置3、类上与方法上结合使用4、RequestMapping注解的value属性4.1 value属性的使用4.2 Ant风格的value4.3 value中的占位符(重点) 5、RequestMapping注解的method属性5.2衍生Mappin…

VsCode一直连接不上 timed out

前言 前段时间用VsCode连接远程服务器,正常操作后总是连接不上,折磨了半个多小时,后面才知道原来是服务器设置的问题,故记录一下,防止后面的小伙伴也踩坑。 我使用的是阿里云服务器,如果是使用其他平台服务…

第十四章大数据和数据科学4分

14.1 引言 14.1.3 科学理念 1.数据科学 数据科学将数据挖掘、统计分析和机器学习与数据集成整合,结合数据建模能力,去构建预测模型、探索数据内容模式。 数据科学依赖于: 1)丰富的数据源。具有能够展示隐藏在组织或客户行为中不…

提升效率!微信自动统计数据报表,轻松实现!

在数字化时代,提高工作效率是每个人的追求。下面就给大家分享一个能够自动统计微信号运营数据的神器——个微管理系统,让大家无需手动整理和计算,提高工作效率! 1、好友统计报表 它分为通讯录好友统计、新增好友统计和删除好友统…

Linux进程地址空间及其页表

文章目录 一、引言二、Linux进程地址空间的概念1、进程地址空间定义2、进程地址空间的组成3、进程地址空间与物理内存的关系 三、页表与内存映射1、页表的定义及作用2、页表的缺页中断 三、进程的写时拷贝 一、引言 在Linux中,进程管理是其核心功能之一&#xff0c…

统一SQL 支持Oracle unpivot列转行

统一SQL介绍 https://www.light-pg.com/docs/LTSQL/current/index.html 源和目标 源数据库:Oracle 目标数据库:TDSQL-MySQL 操作目标 在Oracle中,可以使用unpivot将列转换成行,在TDSQL-MySQL中没有对应的功能,由…

LateX的基础学习

what can i say 在text.tex中写下 \documentclass{article} \begin{document]Hello \LaTeX. \end{document} 关闭记事本,cmd中dir保存,用latex text.tex来编译,可以命令行慢慢编译,这可以做成bat文件 为什么不直接开始在texst…

OSPF认证方式,ISIS简介,ISIS路由器类型

OSPF:转发,泛洪,丢弃

selenium‘拟人包装‘设置

1、设置header,proxy 1.1关于user-agent 输入about:version 找到user-agent: import requests # 引用requests库 from selenium import webdriver#载入浏览器驱动#header,proxy设置 optionswebdriver.ChromeOptions()#实例化浏览器参数设置options.add_argument…

clickhouse学习笔记04

ClickHouse高可用之ReplicatedMergeTree引擎介绍 ClickHouse高可用架构准备-环境说明和ZK搭建 RPM安装ClickHouse 上传我们的clickhouse rpm文件。 安装: 中途需要输入用户名和密码 可以不设置 直接回车。 启动: 查看状态: 查看端口是否占用…

【鸿蒙NEXT】web组件debug模式

官方文档 使用Devtools工具调试前端页面 打开web debug模式 webview.WebviewController.setWebDebuggingAccess(true)chrome 访问 chrome://inspect/#devices Discover network targets 中添加 localhost:9222 创建cat.sh com.coooliang.yourappbundname 为你应用的bundlen…

什么品牌的裤子好看又耐穿?夏季裤子品牌排行榜分享

男生应该怎么样去挑选合适自己的裤子,这应该是不少男士朋友选裤子时最大的疑问了。因为市面上有着不少质量不好,版型不适合亚洲人的裤子了,如果随意去选择就很容易踩雷,那么今天就给大家分享一下关于如何选择裤子的方法&#xff0…

JVM之本地方法栈和程序计数器和堆

本地方法栈 本地方法栈是为虚拟机执行本地方法时提供服务的 JNI:Java Native Interface,通过使用 Java 本地接口程序,可以确保代码在不同的平台上方便移植 不需要进行 GC,与虚拟机栈类似,也是线程私有的,…

牛客网刷题 | BC60 判断是不是字母

描述 KiKi想判断输入的字符是不是字母,请帮他编程实现。 输入描述: 多组输入,每一行输入一个字符。 输出描述: 针对每组输入,输出单独占一行,判断输入字符是否为字母,输出内容详见输出样例…

第二节课,后端登录代码 校验

一、注册逻辑 二、代码写的位置 I UserService.java 写业务逻辑的 2.1 代码1 2.1.1 注释生成 先按 /** 再按 回车 2.1.2 多补充一点 2.2 代码2 Implement method userRegister # 在这里实现用户注册的逻辑,例如将用户名和密码存储到数据库中 2.2.1 自动进入user…

企业上了财务系统,有必要再上费控系统吗?

相信很多财务人员甚至是老板肯定有这样的疑惑:企业已经有了财务系统,为什么还要上费控软件呢?为什么越大的企业越倾向使用专业费控平台来管理企业费用? 当我们在讨论这个问题的时候,首先要搞清楚,这里所说的…

OS国产化改造中LVM卷迁移指导

一、前言 因OS改造涉及LVM卷,且vg卷包含磁盘数量较多,lv中数据较大(100T左右),因此要在OS改造中确保LVM卷信息完整不丢失,保证其上数据安全尤为重要。本文旨在探讨lvm信息存储及迁移,以指导完成…

使用R语言生成频数分布表

概要 使用R语言生成频数分布表 在R语言中,可以使用freq()函数来生成频数分布表。首先,将需要分组的数据存储在一个向量中。然后,使用freq()函数将这个向量作为参数输入,即可生成频数分布表。以下是一个示例: 示例 …