LeetCode 104.二叉树的最大深度

server/2024/9/25 7:45:29/

题目描述

给定一个二叉树 root ,返回其最大深度。

二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。

示例 1:

输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

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

提示:

  • 树中节点的数量在 [0, 104] 区间内。
  • -100 <= Node.val <= 100

方法一 递归dfs

思路:

也是比较基础的 =递归,深度是左右节点中较深的那个+1.

代码:

java">/*** 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 leftHeight=maxDepth(root.left);int rightHeight=maxDepth(root.right);return Math.max(leftHeight,rightHeight)+1;}}
}

方法二 广度优先搜索

思路:

看了官方题解竟然还可以BFS,其实就是每次while循环前先记录一下当前queue的大小,也就是说这一层有几个节点,每次while循环一次就是遍历了一层,深度++;

代码:

java">class Solution {public int maxDepth(TreeNode root) {if (root == null) {return 0;}Queue<TreeNode> queue = new LinkedList<TreeNode>();queue.offer(root);int ans = 0;while (!queue.isEmpty()) {int size = queue.size();while (size > 0) {TreeNode node = queue.poll();if (node.left != null) {queue.offer(node.left);}if (node.right != null) {queue.offer(node.right);}size--;}ans++;}return ans;}
}

参考链接:104. 二叉树的最大深度 - 力扣(LeetCode)


http://www.ppmy.cn/server/23330.html

相关文章

王道数据结构第一章个人向笔记

文章目录 1.1.0 导读1.1.1 绪论1.1.2 数据结构的三要素逻辑结构数据的运算物理结构&#xff08;存储结构&#xff09; 1.2.1 算法的基本概念1.2.2 时间复杂度1.2.3 空间复杂度 1.1.0 导读 数据结构在学什么&#xff1f; 如何用程序代码把显示世界的问题信息画如何用计算机高效…

【Spring AI】05. 向量数据库

文章目录 向量数据库概述可用实现示例用法元数据过滤器Filter StringFilter.Expression 理解向量 向量数据库 向量数据库是一种在 AI 应用中发挥关键作用的特定类型的数据库。 在向量数据库中&#xff0c;查询与传统关系数据库不同。它们不执行精确匹配&#xff0c;而是执行相…

Gone框架介绍6 - 如何使用gone开发web服务

文章目录 1.安装gone辅助工具2.创建一个web项目并运行代码项目结构3.Router4.Controller5.Service 我在两年前实现了一个Golang的依赖注入框架&#xff0c;并且集成了gin、xorm、redis、cron、消息中间件等功能&#xff0c;自己觉得还挺好用的&#xff1b;之前一直没有时间写文…

nginx--安装

yum安装 官方包链接&#xff1a;nginx: Linux packages 官方yum源链接&#xff1a;nginx: Linux packages 配置yum源 [rootlocalhost ~]# yum install -y nginx [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gp…

fofa 是一个什么样的工具

FOFA (Fingerprint of Full Asset) 是一个基于网络的搜索引擎&#xff0c;主要用于信息安全领域&#xff0c;特别是在网络空间资产发现和安全漏洞研究方面。这个工具可以帮助安全研究人员和企业安全团队发现并分析互联网上的设备、服务器、网站和其他相关资产的公开信息。 FOF…

STM32-TIM的输入捕获功能

1.熟练掌握TIM的参数配置&#xff0c; 2.熟练掌握输入通道的参数配置。 3.深刻理解输入捕获的原理和应用范畴。 4.理解输入捕获的原理。 一 什么是输入捕获功能 定时器输入捕获功能&#xff08; input capture &#xff09;是利用定时器的精准计数特性&#xff0c;实现对于…

什么是面向对象?

谈到面向对象&#xff0c;我们不得不说到面向过程。因为面向对象就是从面向过程过渡而来的。 面向过程&#xff1a;就是将一个大的任务分成一条条小的步骤&#xff0c;这些步骤由一个个函数来完成。 而面向对象呢&#xff0c;更加注重这个任务中的参与者&#xff0c;需求里有…

区块链钱包开发——专业区块链开发

随着区块链技术的发展&#xff0c;钱包开发成为了一项至关重要的任务。本文将探讨区块链钱包开发的重要性&#xff0c;分析当前面临的挑战&#xff0c;并展望未来的发展趋势。 一、区块链钱包概述 区块链钱包是一种用于存储和管理数字货币的软件工具。它为用户提供了一个安全的…