【剑指Offer】55.二叉树的深度

news2024/11/24 8:39:14

题目

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度,根节点的深度视为 1 。

数据范围:节点的数量满足 0≤n≤100 ,节点上的值满足 0≤val≤100

进阶:空间复杂度 O(1) ,时间复杂度 O(n)

假如输入的用例为{1,2,3,4,5,#,6,#,#,7},那么如下图:

示例1

输入:{1,2,3,4,5,#,6,#,#,7}

返回值:4

示例2

输入:{}

返回值:0

解答

源代码

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    public int TreeDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }

        Deque<TreeNode> stack = new ArrayDeque<>();
        stack.offerLast(root);
        int depth = 0;

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

            while (length-- > 0) {
                TreeNode node = stack.pollFirst();
                if (node.left != null) {
                    stack.offerLast(node.left);
                }

                if (node.right != null) {
                    stack.offerLast(node.right);
                }
            }
        }

        return depth;
    }
}

总结

使用广度优先遍历,用队列存放二叉树的节点,每遍历一层,二叉树的深度加一。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jenkins联动显示或隐藏参数

1. 添加组件 Active Choices Plug-in 如jenkins无法联网,可在以下两个地址中下载插件,然后放到/home/jenkins/.jenkins/plugin下面重启jenkins即可 Active Choices Active Choices | Jenkins plugin 2. 效果如下: sharding为空时,sharding_info和copy_info不显示 shard…

易点易动固定资产管理系统:精准管理与科学采购,降本增效的利器

在现代企业管理中&#xff0c;固定资产的精准管理和科学采购已成为提升企业效率和降低成本的重要环节。为了满足企业管理的需求&#xff0c;我们自豪地介绍易点易动固定资产管理系统&#xff0c;这是一款功能强大的软件解决方案&#xff0c;旨在帮助企业实现固定资产的精准管理…

AI数字人导览,为各行各业带来全新VR云上服务体验

纵观历届大型运动会的开幕式&#xff0c;开头点火的环节总是备受期待的&#xff0c;那么你见过亚运会的点火环节了吗&#xff1f;一个巨大的数字人手持火炬&#xff0c;穿越了钱塘江的江面&#xff0c;一路奔向主会场&#xff0c;同现场火炬手一同点燃主火炬&#xff0c;这一刻…

详解SPI

引言 串行外设接口&#xff08;Serial Peripheral Interface&#xff0c;简称SPI&#xff09;是一种常见且广泛应用于电子系统中的通信协议。作为一种高效可靠的串行通信技术&#xff0c;SPI总线在电气工程和计算机系统领域扮演着至关重要的角色。它不仅在微控制器和外设之间实…

【EI会议征稿】第三届电子信息工程与计算机通信国际学术会议(EIECC 2023)

第三届电子信息工程与计算机通信国际学术会议&#xff08;EIECC 2023&#xff09; 2023 3rd International Conference on Electronic Information Engineering and Computer Communication 第三届电子信息工程与计算机通信国际学术会议&#xff08;EIECC 2023&#xff09;将…

Hangfire IIS持续运行配置

官方指导文档&#xff1a; https://docs.hangfire.io/en/latest/deployment-to-production/making-aspnet-app-always-running.html 附录&#xff1a; 应用程序池 配置 &#xff1a; 应用程序池 高级设置&#xff1a; 网站高级设置 配置编辑器

oracle TNS Listener 远程投毒漏洞修复

有个客户在等保测评过程&#xff0c;测评公司扫出一个关于oracle的漏洞如下&#xff1a; 客户是RAC环境11.2.0.4&#xff0c;在生产修复漏洞前我做了如下测试验证&#xff1a; 测试环境准备&#xff1a; RAC一套11.2.0.4 实例名dbserver [oraclehisdb1 ~]$ cat /etc/hosts …

【深度分析】智慧燃气及其发展方向

关键词&#xff1a;智慧燃气、智能管网、智慧燃气系统、智能燃气、智慧燃气建设、智慧燃气平台 随着最近几年燃气产业的不断扩大和管理理念的持续更新&#xff0c;如何能够提升管理水平和管理效率&#xff0c;就成为燃气企业需要重点解决的问题。智慧燃气的提出&#xff0c;使…

【JVM】类加载

类加载 一. 加载 Loading二. 连接 Linking1. 验证 Verification2. 准备 Preparation3. 解析 Resolution 三. 初始化 Initialization 类加载是运行时环境的一个重要核心功能。 类加载的主要功能&#xff1a;把 .class 文件加载到内存中构建成为类对象。 什么时候会进行类加载呢…

9月第4周榜单丨哔哩哔哩飞瓜数据B站UP主排行榜发布!

飞瓜轻数发布2023年9月18日-9月24日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能…

docker openjdk:8-jdk-alpine 修改时区、添加字体

新建Dockerfile文件&#xff0c;制作新镜像 FROM openjdk:8-jdk-alpine 1、解决字体问题 RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/* 2、解决时差问题 # 解决时差8小时问题ENV TZAsia/ShanghaiRUN ln -snf /usr/share/zoneinfo/$TZ /et…

Mybatisplus条件构造器

一、Wrapper介绍 Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xff0c;生成 sql 的 where 条件 QueryWrapper &#xff1a; 查询条件封装UpdateWrapper &#xff1a; Update 条件封装AbstractLambdaWrapper…

推动教育行业数字化转型,开利网络为AI熊教育提供落地服务

随着新兴技术的飞速发展&#xff0c;新产品、新服务和新商业模式正不断涌现&#xff0c;推动市场格局逐渐改变。对于传统企业来说&#xff0c;企业发展不仅面临行业内部的竞争&#xff0c;还面临跨界竞争者和颠覆性竞争者的挑战&#xff0c;充满着不确定性。开利网络服务客户AI…

综述 | 关于点云配准的全面综述(一)

原创 | 文 BFT机器人 01 摘要 配准是两个点云之间的变换估计问题&#xff0c;在众多计算机视觉应用中具有独特且关键的作用。基于优化的方法和深度学习方法的发展提高了配准的鲁棒性和效率。最近&#xff0c;基于优化和深度学习方法的结合进一步提高了性能。然而&#xff0c;…

2009款一汽马自达6车自适应前照灯及车身稳定系统功能异常关闭

故障现象 一辆2009款一汽马自达6车&#xff0c;搭载L5发动机&#xff0c;累计行驶里程约为10.7万km。该车组合仪表上的自适应前照灯功能关闭&#xff08;AFS OFF&#xff09;指示灯、动态稳定系统功能关闭&#xff08;DSC OFF&#xff09;指示灯及防侧滑指示灯异常点亮。 故障诊…

FragmentManager is already executing transactions

本文解决问题&#xff1a; java.lang.IllegalStateException: FragmentManager is already executing transactions 问题背景描述&#xff1a; 在Fragment中 用tablayoutviewpagerfragment&#xff0c;即Fragment嵌套Fragment场景、或者ViewPager2嵌套ViewPager2时。 执行生命…

【Linux】之Centos7卸载KVM虚拟化服务

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

​从零开始:集成视频直播美颜SDK到直播平台的步骤

当下&#xff0c;实时美颜技术在直播、社交领域中扮演了关键的角色&#xff0c;帮助主播增强自信&#xff0c;吸引更多观众。本文将指导您从零开始&#xff0c;逐步了解如何将视频直播美颜SDK集成到您的直播平台中。 第一步&#xff1a;选择适用的美颜SDK 在集成美颜功能之前…

什么是OSPF?为什么需要OSPF

【微|信|公|众|号&#xff1a;厦门微思网络】 【微思网络www.xmws.cn&#xff0c;成立于2002年&#xff0c;专业培训21年&#xff0c;思科、华为、红帽、ORACLE、VMware等厂商认证及考试&#xff0c;以及其他认证PMP、CISP、ITIL等】 什么是OSPF&#xff1f; 开放式最短路径优…

适合企业的跨隔离网文件摆渡的四种方式及优缺点

在当今的信息化时代&#xff0c;数据是企业的重要资产&#xff0c;如何有效地管理和传输数据&#xff0c;尤其是跨隔离网的大文件数据&#xff0c;是企业面临的一个挑战。跨隔离网文件摆渡是指在不同安全等级或网络环境的计算机之间传输文件的过程。 目前&#xff0c;市场上常见…