leetcode 104——二叉树的最大深度

news/2024/11/20 23:38:15/

文章目录

  • 题目详情
  • 方法一 万能的递归
  • 方法二 通过使用层序遍历的方式
  • Java完整代码
    • 递归实现
    • 非递归实现——借助队列

题目详情

给定一个二叉树,找出其最大深度。

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

说明: 叶子节点是指没有子节点的节点。
leetcode104
在这里插入图片描述

方法一 万能的递归

在解决树相关的问题时,一定要考虑能不能使用递归解决,如果使用递归解决,问题一般都能变得很简单,详情请看代码。

方法二 通过使用层序遍历的方式

为了计算二叉树的最大深度,可以通过层序遍历的方式,计算有多少层就是树的高度了,同时Java的队列方便我们计算队列中有几个元素,更加容易实现按层序遍历,直接看代码吧

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 static int max(TreeNode root) {if (root == null) {return 0;}return Math.max(max(root.left), max(root.right)) + 1;}public int maxDepth(TreeNode root) {// 递归解决return max(root);}
}

非递归实现——借助队列

/*** 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) {Queue<TreeNode> queue = new LinkedList<>();if (root == null) {return 0;}queue.add(root);TreeNode tmp = null;int result = 0;while(!queue.isEmpty()) {int size = queue.size();while(size > 0) {tmp = queue.poll();if (tmp.left != null) {queue.add(tmp.left);}if (tmp.right != null) {queue.add(tmp.right);}size--;}result++;}return result;}
}

ps:计划每日更新一篇博客,今日2023-05-06,日更第二十天。
昨日更新:
红黑树理论详情与Java实现


http://www.ppmy.cn/news/63404.html

相关文章

数据可视化二、综合项目

零、文章目录 数据可视化二、综合项目 1、项目概述 &#xff08;1&#xff09;项目展示 &#xff08;2&#xff09;项目目的 市场需求&#xff1a;应对现在数据可视化的趋势&#xff0c;越来越多企业需要在很多场景(营销数据&#xff0c;生产数据&#xff0c;用户数据)下使…

vue项目将多张图片生成一个gif动图

当前做项目有一个需求是将多张图片生成一个gif动图的形式 类似下面图片几张图片叠加生成一个gif动图 图片涉及工作隐私&#xff0c;就不公开啦 我们要引入一个gif.js的引入包&#xff0c;但是他没有直接引入的方式&#xff0c;只能从官方下载文件包&#xff0c;下载地址&#…

Linux进程状态及优先级

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 进程状态及优先级 前言正文进程状态就绪运行状态R阻塞睡眠状态 S休眠状态D挂起 暂停状态T前台与后台进程待追踪暂停状态t 死亡状态 X僵尸状态 Z 孤儿进程进程优先级查…

视频播放方案

video插件播放m3u8格式视频(存原生) 这里使用原生的javascript实现m3u8格式视频播放。 使用了包括video.min.js库和HLS插件。 1-基础使用 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title>Video.js HLS Example</title…

SIM800C-AT指令测试(二) SMS短消息

相关的AT主要有&#xff1a; ATCPMS // 查询SIM卡内短消息使用状态 ATCNMI // 新消息指示设置 ATCMGF // 选择短消息格式 ATCSCS // 编码设置 ATCSCA // 查…

ChatGPT 探讨内存屏障的意内存

一、与 ChatGPT 探讨内存屏障的意内存 轻松的氛围&#xff0c;跟 ChatGPT 从内存屏障问题一直扯到CAP原理 我&#xff1a; 2023/4/14 17:48:09 那我可以理解为{ shared_var 1; asm volatile ("sfence" ::: "memory"); asm volatile ("lfence" …

一键免费部署你的私人 ChatGPT 网页应用-ChatGPT Next Web

ChatGPT-Next-Web是一款基于GPT-3.5的在线聊天机器人应用程序。它可以自动回复用户输入的消息&#xff0c;并提供有用的信息和服务。该应用程序使用了最先进的自然语言处理技术和GPT-3.5模型&#xff0c;可以生成自然流畅的文本&#xff0c;并提供准确和个性化的回复。 项目地…

网络原理(五):IP 协议

目录 认识IP 地址 子网掩码 作用 动态分配IP 地址 NAT 机制 认识MAC地址 MAC地址如何工作 认识IP 地址 概念&#xff1a; IP地址&#xff08;Internet Protocol Address&#xff09;是指互联网协议地址&#xff0c;又译为网际协议地址。 作用&#xff1a; IP地址是I…