104.二叉树的最大深度

104. 二叉树的最大深度 - 力扣(LeetCode)

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

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

示例 1:

复制代码
输入:root = [3,9,20,null,null,15,7]
输出:3

示例 2:

复制代码
输入:root = [1,null,2]
输出:2

提示:

  • 树中节点的数量在 [0, 10``4``] 区间内。
  • -100 <= Node.val <= 100

解题思路

递归算法

计算当前节点的左子树最大深度和右子树最大深度

选取二者中最大值作为该结点的子树最大深度值

那么该结点的最大深度则是其子树最大深度值 + 1

实现代码

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 int maxDepth(TreeNode root) {
        // 终止条件
        // 如果当前节点为空,深度为 0
        if(root == null){
            return 0;
        }


        // 单层递归逻辑
        int leftDepth = maxDepth(root.left);
        int rightDepth = maxDepth(root.right);


        return Math.max(leftDepth, rightDepth) + 1;
    }
}

这是我整理的笔记,目前还在学习阶段,文章中可能有错误和不足,欢迎大家斧正!

相关推荐
夜思红尘2 小时前
算法--双指针
python·算法·剪枝
Wang15302 小时前
jdk内存配置优化
java·计算机网络
散峰而望2 小时前
【算法竞赛】C++函数详解:从定义、调用到高级用法
c语言·开发语言·数据结构·c++·算法·github
CoderCodingNo2 小时前
【GESP】C++五级真题(贪心思想考点) luogu-B4071 [GESP202412 五级] 武器强化
开发语言·c++·算法
我有一些感想……2 小时前
An abstract way to solve Luogu P1001
c++·算法·ai·洛谷·mlp
前端小L2 小时前
双指针专题(三):去重的艺术——「三数之和」
javascript·算法·双指针与滑动窗口
0和1的舞者2 小时前
Spring AOP详解(一)
java·开发语言·前端·spring·aop·面向切面
Wang15302 小时前
Java多线程死锁排查
java·计算机网络
在风中的意志2 小时前
[数据库SQL] [leetcode] 2388. 将表中的空值更改为前一个值
数据库·sql·leetcode
小小星球之旅2 小时前
CompletableFuture学习
java·开发语言·学习