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

LeetCode热题100--104. 二叉树的最大深度--简单

1. 题目

给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:
在这里插入图片描述
输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:
输入:root = [1,null,2]
输出:2

2. 题解

/*** 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 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;}}
}

3. 解析

  1. public int maxDepth(TreeNode root): 这是主方法,它接受一个类型为TreeNode的参数root。这个参数表示二叉树的根节点。

  2. if(root == null){return 0;}: 如果输入的根节点(也就是整个二叉树)不存在,那么返回深度0。在计算最大深度时,空树被认为是深度为0的。

  3. else{…}: 如果树不为空,就执行以下操作:

  • int left = maxDepth(root.left);: 这行代码递归地计算左子树的最大深度。它通过调用maxDepth()函数并传入根节点的左孩子作为参数来实现。
  • int right = maxDepth(root.right);: 这行代码也做类似的事情,但是针对右子树。
  • return Math.max(left, right) + 1;: 最后,这个函数返回左子树和右子树的最大深度加上根节点本身的一层深度(由于我们从根节点开始一级一级的深入到叶子节点的位置计算深度,所以这里加1表示在计算完成后,我们要向上走一步回到父节点,因此深度+1。)
http://www.lryc.cn/news/624121.html

相关文章:

  • JavaScript性能优化实战(四):资源加载优化
  • 记SpringBoot3.x + Thymeleaf 项目实现(MVC架构模式)
  • 【Unity3D实例-功能-拔枪】角色拔枪(二)分割上身和下身
  • TDengine IDMP 运维指南(1. 部署规划)
  • 大模型算法岗面试准备经验分享
  • 母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南
  • Java试题-选择题(10)
  • AMBA-AXI and ACE协议详解(四)
  • 计算机毕业设计java的小天鹅酒店月子会所管理小天鹅酒店母婴护理中心管理系统设计小天鹅酒店产后护理会所信息化管理平台
  • 物联网软件开发过程中,数据流图(DFD),用例图,类图,活动图,序列图,状态图,实体关系图(ERD),BPMN(业务流程建模)详解分析
  • 嵌入式练习项目——————抓包获取天气信息
  • Python大模型应用开发-核心技术与项目开发
  • C++编程实战:高效解决算法与数据结构问题
  • Linux817 shell:until,nfs,random
  • React 第七十节 Router中matchRoutes的使用详解及注意事项
  • Next.js跟React关系(Next.js是基于React库的全栈框架)(文件系统路由、服务端渲染SSR、静态生成SSG、增量静态再生ISR、API路由)
  • Vue 与 React 深度对比:设计哲学、技术差异与应用场景
  • 每日Java面试系列(15):进阶篇(String不可变的原因、性能问题、String三剑客、自定义不可变设计、组合优于继承等相关问题)
  • FreeRTOS源码分析八:timer管理(一)
  • Linux学习-多任务(线程)
  • Python 项目里的数据清理工作(数据清洗步骤应用)
  • RK3588开发板Ubuntu系统烧录
  • 「数据获取」《中国教育统计年鉴》(1949-2023)(获取方式看绑定的资源)
  • Python @staticmethod 装饰器与 staticmethod() 函数
  • Spring AI 集成阿里云百炼平台
  • C语言课程开发
  • C11期作业17(07.05)
  • Effective C++ 条款47: 使用traits classes表现类型信息
  • JVM常用工具:jstat、jmap、jstack
  • Transformer架构的数学本质:从注意力机制到大模型时代的技术内核