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

力扣104. 二叉树的最大深度(java,DFS,BFS解法)

Problem: 104. 二叉树的最大深度

文章目录

  • 思路和解法
  • 复杂度
  • Code

思路和解法

DFS

递归处理,退出条件为节点为空,归的过程每次取出当前节点左右子树的最大深度加一

BFS

经典的借助一个队列实现的BFS,用一个变量记录当前的最大层数,在循环实现出队当前节点和添加当前层节点的下一层后将最大层数加一

复杂度

DFS

  • 时间复杂度:

O ( n ) O(n) O(n)

  • 空间复杂度:

O ( n ) O(n) O(n)

BFS

  • 时间复杂度:

O ( n ) O(n) O(n)

  • 空间复杂度:

O ( n ) O(n) O(n)

Code

DFS


/*** 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 {//DFS//Time Complexity: O(n)//Space Complexity: O(n) public int maxDepth(TreeNode root) {//退出条件if (root == null) return 0;return Math.max(maxDepth(root.left),maxDepth(root.right)) + 1;}
}

BFS


/*** 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 {//BFS//Time Complexity: O(n)//Space Complexity: O(n)public int maxDepth(TreeNode root) {if (root == null) return 0;Queue<TreeNode> queue = new LinkedList<>();List<Integer> res = new ArrayList<>();queue.add(root);//记录层数int level = 0;while (!queue.isEmpty()) {int curLevelSize = queue.size();for (int i = 0;i < curLevelSize; ++i) {TreeNode curLevelNode = queue.poll();if (curLevelNode.left != null) {queue.add(curLevelNode.left);}if (curLevelNode.right != null) {queue.add(curLevelNode.right);}}//层数加一level++;}return level;}
}

相关文章:

  • Ubuntu22.04离线安装uwsgi问题记录
  • MySQL集群高可用架构之MMM
  • MYSQL中的触发器TRIGGER
  • JavaWeb[总结]
  • 【UE5】物体沿样条线移动
  • 云计算的发展趋势
  • C#写入Datetime到SQL server
  • CodeWhisperer 使用经验分享
  • npm install导致的OOM解决方案
  • Android Glide加载transform CenterCrop, CircleCrop ShapeableImageView圆形图并描边,Kotlin
  • 如何使用Flask开发RESTful API
  • 计算机毕业设计选题推荐-一周穿搭推荐微信小程序/安卓APP-项目实战
  • 关于解决前后端分离开发——跨域问题
  • OpenCV图像纹理
  • 如何解决小程序异步请求问题
  • 【Leetcode】101. 对称二叉树
  • 2017 前端面试准备 - 收藏集 - 掘金
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • cookie和session
  • Intervention/image 图片处理扩展包的安装和使用
  • js数组之filter
  • node学习系列之简单文件上传
  • v-if和v-for连用出现的问题
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 对象引论
  • 分布式熔断降级平台aegis
  • 高程读书笔记 第六章 面向对象程序设计
  • 聊聊redis的数据结构的应用
  • 聊一聊前端的监控
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 使用SAX解析XML
  • 小程序button引导用户授权
  • 赢得Docker挑战最佳实践
  • 用简单代码看卷积组块发展
  • 原生JS动态加载JS、CSS文件及代码脚本
  • ​ssh免密码登录设置及问题总结
  • #LLM入门|Prompt#3.3_存储_Memory
  • #考研#计算机文化知识1(局域网及网络互联)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (MATLAB)第五章-矩阵运算
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (多级缓存)多级缓存
  • (二开)Flink 修改源码拓展 SQL 语法
  • (分布式缓存)Redis持久化
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (四)库存超卖案例实战——优化redis分布式锁
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net Application的目录
  • .NET 分布式技术比较
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net 中viewstate的原理和使用
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .NET与 java通用的3DES加密解密方法