当前位置: 首页 > news >正文

【Leetcode】104. 二叉树的最大深度

题目

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

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

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

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

    3
   / \
  9  20
    /  \
   15   7

返回它的最大深度 3 。

题解

求最大深度,和深度相关,我们很容易想到用层序遍历。每遍历一层,就深度加1, 怎么记录是第几层我们之前的文章中讲过了。

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int maxDepth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        int depth = 0;
        LinkedList<TreeNode> queue = new LinkedList<>();
        queue.add(root);
        while (!queue.isEmpty()) {
            int size = queue.size();
            while (size > 0) {
                TreeNode current = queue.poll();
                if (current.left != null) {
                    queue.add(current.left);
                }
                if (current.right != null) {
                    queue.add(current.right);
                }
                size--;
            }
            depth++;
        }
        return depth;
    }
}

这道题用递归解代码比较简单.
递归的结束条件: 当节点为叶子节点的时候.
递归的子问题: 当前最大深度 = 左右子树最大深度的较大者 + 1

代码实现就很简单了。

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

热门阅读

  • 技术文章汇总
  • 【Leetcode】103. 二叉树的锯齿形层次遍历
  • 【Leetcode】102. 二叉树的层次遍历
  • 【Leetcode】101. 对称二叉树
  • 【Leetcode】100. 相同的树
  • 【Leetcode】98. 验证二叉搜索树

Leetcode名企之路

相关文章:

  • SDI,ASI,HDMI,DP等接口的区别
  • Luogu P3181 [HAOI2016]找相同字符 广义$SAM$
  • 主流视音频平台参数
  • python中的with语句
  • LAV Filter 源代码分析 4: LAV Video (2)
  • CSS:z-index
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 客户端网络库实现真的很简单吗?
  • HTPC家庭娱乐和XBOX未来发展畅想另:创业工作机会
  • Socket IO与NIO(四)
  • 【算法导论】学习笔记——第6章 堆排序
  • 转:网络协议概览
  • 5分钟了解 Python 中的super函数是如何实现继承的
  • LINQ To SQL在N层应用程序中的CUD操作、批量删除、批量更新
  • 问题:什么情况UDP的非阻塞写会失败?
  • 《剑指offer》分解让复杂问题更简单
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • 08.Android之View事件问题
  • angular组件开发
  • canvas绘制圆角头像
  • C学习-枚举(九)
  • ES10 特性的完整指南
  • JavaWeb(学习笔记二)
  • jquery ajax学习笔记
  • Python_OOP
  • react-native 安卓真机环境搭建
  • Terraform入门 - 1. 安装Terraform
  • win10下安装mysql5.7
  • 高度不固定时垂直居中
  • 记录:CentOS7.2配置LNMP环境记录
  • 技术:超级实用的电脑小技巧
  • 浏览器缓存机制分析
  • 什么是Javascript函数节流?
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 我是如何设计 Upload 上传组件的
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • $.ajax()
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)WCF的Binding模型
  • (分享)自己整理的一些简单awk实用语句
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (转)【Hibernate总结系列】使用举例
  • (转)scrum常见工具列表
  • (转)甲方乙方——赵民谈找工作
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net Application的目录
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 药厂业务系统 CPU爆高分析
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...