二叉树最大深度

·leetcode- 104-二叉树的最大深度

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

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

示例 1:

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

示例 2:

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

·遍历方法有三个:

迭代法最简单(遍历左数和右数,取最大)

基于广度优先算法,需要用到队列

基于深度优先算法,需要用到栈。

·Java代码

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

class Solution {
    public int maxDepth(TreeNode root) {
        if(root == null) return 0;
        int left = maxDepth(root.left);
        int right = maxDepth(root.right);
        return Math.max(left, right) + 1;
    }

    public int maxDepth1(TreeNode root){
        if(root == null) return 0;

        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        int depth = 0;

        while(!queue.isEmpty()){
            int size = queue.size();
            depth ++;

            for(int i = 0; i < size ; i ++){
                TreeNode node = queue.poll();
                if(node.left != null) queue.offer(node.left);
                if(node.right != null) queue.offer(node.right);
            }
        }
        return depth;
    }

    public int maxDepth2(TreeNode root){
        if(root == null) return 0;
        Stack<TreeNode> stack = new Stack<TreeNode>();
        Stack<Integer> depths = new Stack<Integer>();

        int maxDepth = 0;
        stack.push(root);
        depths.push(1);

        while(! stack.isEmpty()){
            TreeNode node = stack.pop();
            int depth = depths.pop();

            if(node != null) maxDepth = Math.max(maxDepth, depth);
            if(node.left != null) {
                stack.push(node.left);
                depths.push(depth + 1);
            }
            if(node.right != null){
                stack.push(node.right);
                depths.push(depth + 1);
            }
        }
        return maxDepth;
    }

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿一网络安全学院来向你科普关于企业安全服务

一、四大服务体系 1、可管理安全服务 在提供传统安全产品及安全服务的基础上&#xff0c;逐步开展安全运营&#xff0c;用开放的安全平台连接卓越的产品和服务&#xff0c;洞察安全态势&#xff0c;为企业级用户提供小时级的闭环安全保障。 2、安全咨询服务 为客户进行全方…

苹果AI一夜颠覆所有,Siri史诗级进化,内挂GPT-4o

苹果AI一夜颠覆所有&#xff0c;Siri史诗级进化&#xff0c;内挂GPT-4o 刚刚&#xff0c;苹果AI&#xff0c;正式交卷&#xff01; 今天&#xff0c;苹果构建了一个全新AI帝国——个人化智能系统Apple Intelligence诞生&#xff0c;智能助手Siri迎来诞生13年以来的史诗级进化…

2024年【G2电站锅炉司炉】报名考试及G2电站锅炉司炉考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 G2电站锅炉司炉报名考试是安全生产模拟考试一点通生成的&#xff0c;G2电站锅炉司炉证模拟考试题库是根据G2电站锅炉司炉最新版教材汇编出G2电站锅炉司炉仿真模拟考试。2024年【G2电站锅炉司炉】报名考试及G2电站锅炉…

MCU为什么上电不启动

相信很多朋友们都遇到过&#xff0c;自信满满的将程序下载到板子上&#xff0c;发现MCU居然没启动。 那这个现象可能有很多问题会导致&#xff0c;让我们来看看会有哪些原因。 1、BOOT引脚电平不对&#xff1a; 在GD32 MCU上&#xff0c;BOOT引脚决定了MCU的启动方式&#x…

Elastic Search 8.14:更快且更具成本效益的向量搜索,使用 retrievers 和重新排序提升相关性,RAG 和开发工具

作者&#xff1a;来自 Elastic Yaru Lin, Ranjana Devaji 我们致力于突破搜索开发的界限&#xff0c;并专注于为搜索构建者提供强大的工具。通过我们的最新更新&#xff0c;Elastic 对于处理以向量表示的大量数据的客户来说变得更加强大。这些增强功能保证了更快的速度、降低的…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:AI智能监控 用于沙滩救援

以色列的一个团队在人工智能领域取得的成果引起了轰动。 今天他们取得的成果源于多年前的一个想法。Netanel Eliav 和 Adam Bismut 是校园时代的旧伙伴&#xff0c;当时他们想要解决一个可以改变世界的问题&#xff0c;由此引出这样一个想法&#xff1a;溺水的 Bismut 漂流到死…

【CT】LeetCode手撕—25. K 个一组翻转链表

目录 题目1-思路2- 实现⭐25. K 个一组翻转链表——题解思路 3- ACM实现 题目 原题连接&#xff1a;25. K 个一组翻转链表 1-思路 1. dummyHead&#xff1a;设置虚拟头结点&#xff0c;通过虚拟头结点保证每个结点的地位相同2. 定位 pre 和 end 拆链&#xff1a;借助 pre 、s…

419. 甲板上的战舰

题目 给你一个大小为 m x n 的矩阵 board 表示甲板&#xff0c;其中&#xff0c;每个单元格可以是一艘战舰 ‘X’ 或者是一个空位 ‘.’ &#xff0c;返回在甲板 board 上放置的战舰的数量。 战舰只能水平或者垂直放置在 board 上。换句话说&#xff0c;战舰只能按 1 x k&…

弘君资本:光刻机、存储芯片概念拉升 同益股份、上海贝岭等涨停

光刻机概念11日盘中再度走强&#xff0c;到发稿&#xff0c;双乐股份、同益股份、东方嘉盛、盛剑环境等涨停&#xff0c;飞凯资料涨近10%&#xff0c;南大光电涨超7%。 存储芯片概念亦拉升&#xff0c;到发稿&#xff0c;雅创电子涨超12%&#xff0c;万润科技、上海贝岭、好上…

何为屎山代码?

在编程界&#xff0c;有一种代码被称为"屎山代码"。这并非指某种编程语言或方法&#xff0c;而是对那些庞大而复杂的项目的一种形象称呼。屎山代码&#xff0c;也被称为"祖传代码"&#xff0c;是历史遗留问题&#xff0c;是前人留给我们的"宝藏"…

FL Studio21.2.8最新永久破解安装包下载,音乐创作神器免费下载

大家好&#xff01;今天我要和大家分享一个超棒的音乐制作软件——FL Studio21永久免费破解中文版下载&#xff01;&#x1f929; 作为一名音乐爱好者&#xff0c;我一直在寻找一款功能强大、操作简单的音乐制作工具。而FL Studio21正是我梦寐以求的宝藏&#xff01;&#x1f3…

2024年6月8日,骑行杨柳冲峡谷:一场心灵与自然的交响曲

引言&#xff1a;寻找生活的节奏在这个快节奏的时代&#xff0c;我们常常迷失在都市的喧嚣中&#xff0c;忘记了如何聆听内心的声音。2024年6月8日&#xff0c;我与一群志同道合的校卡骑行群骑友&#xff0c;踏上了前往杨柳冲峡谷的旅程&#xff0c;这不仅仅是一次简单的户外活…

【牛客面试必刷TOP101】Day31.BM60 括号生成和BM61 矩阵最长递增路径

文章目录 前言一、BM60 括号生成题目描述题目解析二、BM61 矩阵最长递增路径题目描述题目解析总结 前言 一、BM60 括号生成 题目描述 描述&#xff1a; 给出n对括号&#xff0c;请编写一个函数来生成所有的由n对括号组成的合法组合。 例如&#xff0c;给出n3&#xff0c;解集为…

如何优化仓库布局与ERP库存管理

一、引言 随着企业规模的不断扩大&#xff0c;仓库管理和库存控制成为企业运营中不可或缺的一环。优化仓库布局和提高ERP库存管理效率&#xff0c;对于降低企业成本、提高物流效率、增强企业竞争力具有重要意义。 二、优化仓库布局 1. 分析仓库需求 在优化仓库布局之前&…

如何使用Python在word文档中创建表格

如何使用Python在word文档中创建表格 介绍效果代码 介绍 本文将介绍如何使用Python库python-docx在Word文档中创建表格。 效果 插入表格前的word文档&#xff1a; 插入表格后的word文档&#xff1a; 代码 from docx import Document# 加载现有的Word文档 doc Document(…

计算机专业:未来何去何从?

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Docker高级篇之Docker-compose容器编排

文章目录 1. Docker-compse介绍2. Docker-compse下载3. Docker-compse核心概念4. Docker-compse使用案例 1. Docker-compse介绍 Docker-compose时Docker官方的一个开源的项目&#xff0c;负责对Docker容器集群的快速编排。Docker-compose可以管理多个Docker容器组成一个应用&a…

C++第二十六弹---stack和queue的基本操作详解与模拟实现

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1. stack的介绍和使用 1.1 stack的介绍 ​1.2 stack的使用 1.3 stack 模拟实现 2. queue的介绍和使用 2.1 queue的介绍 2.2 queue的使用 2…

Transformer介绍

Transformer的诞生 2018年Google发出一篇论文《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》, BERT模型横空出世, 并横扫NLP领域11项任务的最佳成绩&#xff01; 而在BERT中发挥重要作用的结构就是Transformer, 之后又相继出现XLNET&a…

java:使用shardingSphere访问mysql的分库分表数据

# 创建分库与分表 创建两个数据库【order_db_1、order_db_2】。 然后在两个数据库下分别创建三个表【orders_1、orders_2、orders_3】。 建表sql请参考&#xff1a; CREATE TABLE orders_1 (id bigint NOT NULL,order_type varchar(255) NULL DEFAULT NULL,customer_id bigi…