计算树的深度

news/2024/7/20 21:11:51 标签: 深度优先, 数据结构, AVL

文章目录

  • 前言
  • 题目
  • 代码实现:

前言

这道题目是力扣上面的一道简单题目,求二叉树的最大深度,我觉得掌握求树的深度问题还是很有必要的,对于AVL等树来说,求树的深度是很重要的问题。

题目

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

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

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

	3 
  /   \ 
 9     20
   	  /   \    
     15    7

结果显然易见,为3。

怎么求得树的最大深度呢?

思路:
找出终止条件:当前节点为空
找出返回值:节点为空时说明高度为 0,所以返回0;
节点不为空时则分别求左右子树的高度的最大值,同时加1表示当前节点的高度,返回该数值

意思就是递归处理,比较树的左右子树的高度,返回较高的那棵树的深度。

	3 
  /   \ 
 9     20
   	  /   \    
     15    7

解析:
比如上面那颗树:root = 3;

h(root) = max( h ( root.left ), h ( root.right ) )+1;
h(root.left) = 1 ,因为其的左右结点都为null
h(root.right) = max(h(root.right.left),h(root.right.right))+1;
很明显:h(root.right) = max(1,1)+1 = 2;
所以:h(root) =max(1,2)+1 = 3;

代码实现:

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

http://www.niftyadmin.cn/n/1440867.html

相关文章

JAVA调用接口获取数据

package com.zving.zzfw.bl;import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.PostMethod; import com.zving.appapi.util.HttpClientUtil; import com.zving.framework.json.JSONObject;/*** author Clover * 登录用户同步题库…

Servlet的一生都经历了什么,Servlet小结

文章目录servlet是什么servlet职责servlet的生命周期(LF)创建创建的方式初始化service()doGet()/dePost()销毁LF的验证servlet是什么 server applet : 服务器端运行的java程序。 servlet职责 前端(HTML…

微软将在HEC上发布Windows 2003 64-bit(转)

继Windows XP Professional 64-bit和Windows Server 2003 Service Pack 1成功发布到制造商手中后,微软又宣布即将在下个月举行的年度Windows HEC(Hardware Engineering Conference,硬件工程师大会)上发布期待已久的Windows Server…

log4j日志的使用

文章目录日志是什么日志级别java使用log4j框架日志是什么 记录项目运行信息的文本,长期存储,定位异常,数据分析。 日志级别 ALLTRACE:跟踪(不常用)DEBUG:调式(开发者)INFO&#x…

scala使用slick查询的全过程(使用cass class)

1. 首先导包 <dependency> <groupId>com.typesafe.slick</groupId> <artifactId>slick_2.10</artifactId> <version>3.1.1</version></dependency>2.配置mysql application.conf mip_common { url "jdbc:mys…

系统硬件资源和 Emulator 模拟(转)

系统硬件资源包括&#xff1a;CPU、ROM、RAM和电源。CPU:32位,目前主频通常为190 MHz或206 MHz ,ARMROM:包括了操作系统和内置中间件。通常大小为20MB,被系统映射为Z盘。I/O设备&#xff1a;比较重要的一个是内存卡槽&#xff0c;它被映射为系统d盘。RAM:它用于程序和内核运行&…

单例模式--懒汉式/饿汉式的创建方式

文章目录单例模式懒汉式饿汉式单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象…

让我敬而远之的Java反射机制原来没有那么难

文章目录前言类加载类加载步骤反射技术Class对象Field类Method类关于双亲委派机制前言 反射是被视为动态语言的关键&#xff0c;反射机制允许程序在执行期间借助于Reflection API取得任何类得内部信息&#xff0c;并能够直接操作任意对象得内部属性和方法&#xff08;包括私有…